Update to SMF 2.1.3 - Installation Instructions for 2.1.2

Update to SMF 2.1.3
SMF 2.1.3

SMF 2.1.3 includes various bug fixes and security updates.

File Edits ALT + Click to collapse all the operations

./SSI.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
define('SMF_VERSION', '2.1.2');
Replace With: Select
define('SMF_VERSION', '2.1.3');
Find: Select
global $auth_secret;
Replace With: Select
global $auth_secret, $cache_accelerator, $cache_memcached;

./Sources/Cache/APIs/FileBased.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
if (($fp = fopen($file, 'rb')) !== false)
Replace With: Select
if (file_exists($file) && ($fp = fopen($file, 'rb')) !== false)
Find: Select
if (($value = smf_json_decode($raw, true, false)) !== array() && $value['expiration'] >= time())
Replace With: Select
if (($value = smf_json_decode($raw, true, false)) !== array() && isset($value['expiration']) && $value['expiration'] >= time())

./Sources/Class-Punycode.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
const DELIMITER = '-';

Add After: Select
/**
* IDNA Error constants
*/
const IDNA_ERROR_EMPTY_LABEL = 1;
const IDNA_ERROR_LABEL_TOO_LONG = 2;
const IDNA_ERROR_DOMAIN_NAME_TOO_LONG = 4;
const IDNA_ERROR_LEADING_HYPHEN = 8;
const IDNA_ERROR_TRAILING_HYPHEN = 16;
const IDNA_ERROR_HYPHEN_3_4 = 32;
const IDNA_ERROR_LEADING_COMBINING_MARK = 64;
const IDNA_ERROR_DISALLOWED = 128;
const IDNA_ERROR_PUNYCODE = 256;
const IDNA_ERROR_LABEL_HAS_DOT = 512;
const IDNA_ERROR_INVALID_ACE_LABEL = 1024;
const IDNA_ERROR_BIDI = 2048;
const IDNA_ERROR_CONTEXTJ = 4096;

Find: Select
protected $encoding;

Add After: Select
/**
* Whether to use Non-Transitional Processing.
* Setting this to true breaks backward compatibility with IDNA2003.
*
* @param bool
*/
protected $nonTransitional = false;

/**
* Whether to use STD3 ASCII rules.
*
* @param bool
*/
protected $std3 = false;

Find: Select
/**
* Encode a domain to its Punycode version
Add Before: Select
/**
* Enable/disable Non-Transitional Processing
*
* @param bool $nonTransitional Whether to use Non-Transitional Processing
*/
public function useNonTransitional(bool $nonTransitional)
{
$this->nonTransitional = $nonTransitional;
}

/**
* Enable/disable STD3 ASCII rules
*
* @param bool $std3 Whether to use STD3 ASCII rules
*/
public function useStd3(bool $std3)
{
$this->std3 = $std3;
}

Find: Select
$input = mb_strtolower($input, $this->encoding);
$parts = explode('.', $input);
foreach ($parts as &$part) {
Replace With: Select
// For compatibility with idn_to_* functions
if ($this->decode($input) === false)
return false;

$errors = array();
$preprocessed = $this->preprocess($input, $errors);

if (!empty($errors))
{
return false;
}

$parts = explode('.', $preprocessed);
foreach ($parts as $p => &$part) {
Find: Select
$part = $this->encodePart($part);
Add After: Select

$validation_status = $this->validateLabel($part, true);

switch ($validation_status) {
case self::IDNA_ERROR_LABEL_TOO_LONG:
case self::IDNA_ERROR_LEADING_HYPHEN:
case self::IDNA_ERROR_TRAILING_HYPHEN:
case self::IDNA_ERROR_LEADING_COMBINING_MARK:
case self::IDNA_ERROR_DISALLOWED:
case self::IDNA_ERROR_PUNYCODE:
case self::IDNA_ERROR_LABEL_HAS_DOT:
case self::IDNA_ERROR_INVALID_ACE_LABEL:
case self::IDNA_ERROR_BIDI:
case self::IDNA_ERROR_CONTEXTJ:
return false;
break;

case self::IDNA_ERROR_HYPHEN_3_4:
$part = $parts[$p];
break;

case self::IDNA_ERROR_EMPTY_LABEL:
$parts_count = count($parts);
if ($parts_count === 1 || $p !== $parts_count - 1)
return false;
break;

default:
break;
}
Find: Select
$length = strlen($output);
Replace With: Select

// IDNA_ERROR_DOMAIN_NAME_TOO_LONG
if (strlen(rtrim($output, '.')) > 253)
return false;
Find: Select
{
$input = strtolower($input);
$parts = explode('.', $input);
foreach ($parts as &$part)
Replace With: Select
{
$errors = array();
$preprocessed = $this->preprocess($input, $errors);

if (!empty($errors))
Find: Select
if (strpos($part, static::PREFIX) !== 0)
Replace With: Select
return false;
}

$parts = explode('.', $preprocessed);
foreach ($parts as $p => &$part)
{
if (strpos($part, static::PREFIX) === 0)
Find: Select
continue;
Replace With: Select
$part = substr($part, strlen(static::PREFIX));
$part = $this->decodePart($part);

if ($part === false)
return false;
Find: Select
$part = substr($part, strlen(static::PREFIX));
$part = $this->decodePart($part);
Replace With: Select
if ($this->validateLabel($part, false) !== 0)
{
if ($part === '')
{
$parts_count = count($parts);

if ($parts_count === 1 || $p !== $parts_count - 1)
return false;
}
else
return false;
}
Find: Select
$digit = static::$decodeTable[$input[$pos++]];
Add Before: Select
if (!isset($input[$pos]) || !isset(static::$decodeTable[$input[$pos]]))
return false;

Find: Select
return chr(($code >> 18) + 240) . chr((($code >> 12) & 63) + 128) . chr((($code >> 6) & 63) + 128) . chr(($code & 63) + 128);
}
}
Add After: Select

/**
* Prepare domain name string for Punycode processing.
* See https://www.unicode.org/reports/tr46/#Processing
*
* @param string $domain A domain name
* @param array $errors Will record any errors encountered during preprocessing
*/
protected function preprocess(string $domain, array &$errors = array())
{
global $sourcedir;

require_once($sourcedir . '/Unicode/Idna.php');
require_once($sourcedir . '/Subs-Charset.php');

$regexes = idna_regex();

if (preg_match('/[' . $regexes['disallowed'] . ($this->std3 ? $regexes['disallowed_std3'] : '') . ']/u', $domain))
$errors[] = 'disallowed';

$domain = preg_replace('/[' . $regexes['ignored'] . ']/u', '', $domain);

unset($regexes);

$maps = idna_maps();

if (!$this->nonTransitional)
$maps = array_merge($maps, idna_maps_deviation());

if (!$this->std3)
$maps = array_merge($maps, idna_maps_not_std3());

return utf8_normalize_c(strtr($domain, $maps));
}

/**
* Validates an individual part of a domain name.
*
* @param string $label Individual part of a domain name.
* @param bool $toPunycode True for encoding to Punycode, false for decoding.
*/
protected function validateLabel(string $label, bool $toPunycode = true)
{
global $sourcedir;

$length = strlen($label);

if ($length === 0)
{
return self::IDNA_ERROR_EMPTY_LABEL;
}

if ($toPunycode)
{
if ($length > 63)
{
return self::IDNA_ERROR_LABEL_TOO_LONG;
}

if ($this->std3 && $length !== strspn($label, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-'))
{
return self::IDNA_ERROR_PUNYCODE;
}
}

if (strpos($label, '-') === 0)
{
return self::IDNA_ERROR_LEADING_HYPHEN;
}

if (strrpos($label, '-') === $length - 1)
{
return self::IDNA_ERROR_TRAILING_HYPHEN;
}

if (substr($label, 2, 2) === '--')
{
return self::IDNA_ERROR_HYPHEN_3_4;
}

if (preg_match('/^\p{M}/u', $label))
{
return self::IDNA_ERROR_LEADING_COMBINING_MARK;
}

require_once($sourcedir . '/Unicode/Idna.php');
require_once($sourcedir . '/Subs-Charset.php');

$regexes = idna_regex();

if (preg_match('/[' . $regexes['disallowed'] . ($this->std3 ? $regexes['disallowed_std3'] : '') . ']/u', $label))
{
return self::IDNA_ERROR_INVALID_ACE_LABEL;
}

if (!$toPunycode && $label !== utf8_normalize_kc($label))
{
return self::IDNA_ERROR_INVALID_ACE_LABEL;
}

return 0;
}

./Sources/DbPackages-mysql.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Strip out the table name, we might not need it in some cases
$real_prefix = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $db_prefix, $match) === 1 ? $match[3] : $db_prefix;
Add After: Select
$database = !empty($match[2]) ? $match[2] : $db_name;
Find: Select
// With or without the database name, the fullname looks like this.
$full_table_name = str_replace('{db_prefix}', $real_prefix, $table_name);
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
Replace With: Select
// With or without the database name, the fullname looks like this.
$full_table_name = str_replace('{db_prefix}', $real_prefix, $table_name);
// Do not overwrite $table_name, this causes issues if we pass it onto a helper function.
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
Find: Select
// First - no way do we touch SMF tables.
if (in_array(strtolower($table_name), $reservedTables))
Replace With: Select
// First - no way do we touch SMF tables.
if (in_array(strtolower($short_table_name), $reservedTables))
Find: Select
$db_package_log[] = array('remove_table', $table_name);
Replace With: Select
$db_package_log[] = array('remove_table', $short_table_name);
Find: Select
$tables = $smcFunc['db_list_tables']();
Replace With: Select
$tables = $smcFunc['db_list_tables']($database);

Find: Select
$smcFunc['db_drop_table']($table_name . '_old');
Replace With: Select
$smcFunc['db_drop_table']($short_table_name . '_old');
Find: Select
RENAME TABLE ' . $table_name . ' TO ' . $table_name . '_old',
Replace With: Select
RENAME TABLE ' . $short_table_name . ' TO ' . $short_table_name . '_old',
Find: Select
$table_query = 'CREATE TABLE ' . $table_name . "\n" . '(';
Replace With: Select
$table_query = 'CREATE TABLE ' . $short_table_name . "\n" . '(';
Find: Select
$columns = implode(',', $index['columns']);
Replace With: Select
// MySQL If its a text column, we need to add a size.
foreach ($index['columns'] as &$c)
{
$c = trim($c);

// If a size was already specified, we won't be able to match it anyways.
$key = array_search($c, array_column($columns, 'name'));
$columns[$key]['size'] = isset($columns[$key]['size']) && is_numeric($columns[$key]['size']) ? $columns[$key]['size'] : null;
list ($type, $size) = $smcFunc['db_calculate_type']($columns[$key]['type'], $columns[$key]['size']);
if (
$key === false
|| !isset($columns[$key])
|| !in_array($columns[$key]['type'], array('text', 'mediumntext', 'largetext', 'varchar', 'char'))
|| (
isset($size)
&& $size <= 191
)
)
continue;

$c .= '(191)';
}

$idx_columns = implode(',', $index['columns']);
Find: Select
$index['name'] = implode('_', $index['columns']);
$table_query .= "\n\t" . (isset($index['type']) && $index['type'] == 'unique' ? 'UNIQUE' : 'KEY') . ' ' . $index['name'] . ' (' . $columns . '),';
Replace With: Select
$index['name'] = trim(implode('_', preg_replace('~(\(\d+\))~', '', $index['columns'])));

$table_query .= "\n\t" . (isset($index['type']) && $index['type'] == 'unique' ? 'UNIQUE' : 'KEY') . ' ' . $index['name'] . ' (' . $idx_columns . '),';
Find: Select
'table1' => $table_name,
'table2' => $table_name . '_old',
Replace With: Select
'table1' => $short_table_name,
'table2' => $short_table_name . '_old',
Find: Select
INSERT INTO ' . $table_name . '('
Replace With: Select
INSERT INTO ' . $short_table_name . '('
Find: Select
FROM ' . $table_name . '_old',
Replace With: Select
FROM ' . $short_table_name . '_old',
Find: Select
$smcFunc['db_drop_table']($table_name . '_old');
}
Replace With: Select
$smcFunc['db_drop_table']($short_table_name . '_old');
}
Find: Select
global $reservedTables, $smcFunc, $db_prefix;
Replace With: Select
global $reservedTables, $smcFunc, $db_prefix, $db_name;
Find: Select
// After stripping away the database name, this is what's left.
$real_prefix = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $db_prefix, $match) === 1 ? $match[3] : $db_prefix;
Add After: Select
$database = !empty($match[2]) ? $match[2] : $db_name;
Find: Select
// Get some aliases.
$full_table_name = str_replace('{db_prefix}', $real_prefix, $table_name);
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
Replace With: Select
// Get some aliases.
$full_table_name = str_replace('{db_prefix}', $real_prefix, $table_name);
// Do not overwrite $table_name, this causes issues if we pass it onto a helper function.
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
Find: Select
// God no - dropping one of these = bad.
if (in_array(strtolower($table_name), $reservedTables))
Replace With: Select
// God no - dropping one of these = bad.
if (in_array(strtolower($short_table_name), $reservedTables))
Find: Select
if (in_array($full_table_name, $smcFunc['db_list_tables']()))
Replace With: Select
$tables = $smcFunc['db_list_tables']($database);
if (in_array($full_table_name, $tables))
Find: Select
$query = 'DROP TABLE ' . $table_name;
Replace With: Select
$query = 'DROP TABLE ' . $short_table_name;
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Log that we will want to uninstall this!
Replace With: Select
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$column_info = array_change_key_case($column_info);

// Log that we will want to uninstall this!
Find: Select
$db_package_log[] = array('remove_column', $table_name, $column_info['name']);
Replace With: Select
$db_package_log[] = array('remove_column', $short_table_name, $column_info['name']);
Find: Select
ALTER TABLE ' . $table_name . '
ADD ' . smf_db_create_query_column($column_info) . (empty($column_info['auto']) ? '' : ' primary key'
Replace With: Select
ALTER TABLE ' . $short_table_name . '
ADD ' . smf_db_create_query_column($column_info) . (empty($column_info['auto']) ? '' : ' primary key'
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Does it exist?
Replace With: Select
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Does it exist?
Find: Select
// Does it exist?
$columns = $smcFunc['db_list_columns']($table_name, true);
Replace With: Select
// Does it exist?
$columns = $smcFunc['db_list_columns']($table_name, true);

Find: Select
ALTER TABLE ' . $table_name . '
DROP COLUMN ' . $column_name,
Replace With: Select
ALTER TABLE ' . $short_table_name . '
DROP COLUMN ' . $column_name,
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Check it does exist!
Replace With: Select
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$column_info = array_change_key_case($column_info);

// Check it does exist!
Find: Select
// Get the right bits.
Replace With: Select

// Get the right bits.
Find: Select
$unsigned = in_array($type, array('int', 'tinyint', 'smallint', 'mediumint', 'bigint')) && !empty($column_info['unsigned']) ? 'unsigned ' : '';

Add After: Select
// Fix the default.
$default = '';
if (array_key_exists('default', $column_info) && is_null($column_info['default']))
$default = 'NULL';
elseif (isset($column_info['default']) && is_numeric($column_info['default']))
$default = strpos($column_info['default'], '.') ? floatval($column_info['default']) : intval($column_info['default']);
else
$default = '\'' . $smcFunc['db_escape_string']($column_info['default']) . '\'';

Find: Select
ALTER TABLE ' . $table_name . '
CHANGE COLUMN `' . $old_column . '` `' . $column_info['name'] . '` ' . $type . ' ' . (!empty($unsigned) ? $unsigned : '') . (!empty($column_info['not_null']) ? 'NOT NULL' : '') . ' ' .
(!isset($column_info['default']) ? '' : 'default \'' . $smcFunc['db_escape_string']($column_info['default']) . '\'') . ' ' .
Replace With: Select
ALTER TABLE ' . $short_table_name . '
CHANGE COLUMN `' . $old_column . '` `' . $column_info['name'] . '` ' . $type . ' ' .
(!empty($unsigned) ? $unsigned : '') . (!empty($column_info['not_null']) ? 'NOT NULL' : '') . ' ' .
($default === '' ? '' : 'DEFAULT ' . $default) . ' ' .
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// No columns = no index.
Replace With: Select
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// No columns = no index.
Find: Select
$columns = implode(',', $index_info['columns']);
Add Before: Select

// MySQL If its a text column, we need to add a size.
$cols = $smcFunc['db_list_columns']($table_name, true);
foreach ($index_info['columns'] as &$c)
{
$c = trim($c);
$cols[$c]['size'] = isset($cols[$c]['size']) && is_numeric($cols[$c]['size']) ? $cols[$c]['size'] : null;
list ($type, $size) = $smcFunc['db_calculate_type']($cols[$c]['type'], $cols[$c]['size']);

// If a size was already specified, we won't be able to match it anyways.
if (
!isset($cols[$c])
|| !in_array($cols[$c]['type'], array('text', 'mediumntext', 'largetext', 'varchar', 'char'))
|| (
isset($size)
&& $size <= 191
)
)
continue;

$c .= '(191)';
}

Find: Select
$index_info['name'] = implode('_', $index_info['columns']);
Replace With: Select
$index_info['name'] = trim(implode('_', preg_replace('~(\(\d+\))~', '', $index_info['columns'])));
Find: Select
$db_package_log[] = array('remove_index', $table_name, $index_info['name']);
Replace With: Select
$db_package_log[] = array('remove_index', $short_table_name, $index_info['name']);
Find: Select
ALTER TABLE ' . $table_name . '
ADD PRIMARY KEY (' . $columns . ')',
Replace With: Select
ALTER TABLE ' . $short_table_name . '
ADD PRIMARY KEY (' . $columns . ')',
Find: Select
ALTER TABLE ' . $table_name . '
ADD ' . (isset($index_info['type']) && $index_info['type'] == 'unique' ? 'UNIQUE' : 'INDEX') . ' ' . $index_info['name'] . ' (' . $columns . ')',
Replace With: Select
ALTER TABLE ' . $short_table_name . '
ADD ' . (isset($index_info['type']) && $index_info['type'] == 'unique' ? 'UNIQUE' : 'INDEX') . ' ' . $index_info['name'] . ' (' . $columns . ')',
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Better exist!
Replace With: Select
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Better exist!
Find: Select
ALTER TABLE ' . $table_name . '
DROP PRIMARY KEY',
Replace With: Select
ALTER TABLE ' . $short_table_name . '
DROP PRIMARY KEY',
Find: Select
ALTER TABLE ' . $table_name . '
DROP INDEX ' . $index_name,
Replace With: Select
ALTER TABLE ' . $short_table_name . '
DROP INDEX ' . $index_name,
Find: Select
function smf_db_table_structure($table_name)
{
global $smcFunc, $db_prefix;
Replace With: Select
function smf_db_table_structure($table_name)
{
global $smcFunc, $db_prefix, $db_name;
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Find the table engine and add that to the info as well
Replace With: Select
$parsed_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$real_table_name = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $parsed_table_name, $match) === 1 ? $match[3] : $parsed_table_name;
$database = !empty($match[2]) ? $match[2] : $db_name;

// Find the table engine and add that to the info as well
Find: Select
LIKE {string:table}',
Add Before: Select
IN {raw:db}
Find: Select
'table' => strtr($table_name, array('_' => '\\_', '%' => '\\%'))
Replace With: Select
'db' => $database,
'table' => $real_table_name
Find: Select
'name' => $table_name,
Replace With: Select
'name' => $parsed_table_name,
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

$result = $smcFunc['db_query']('', '
SELECT column_name "Field", COLUMN_TYPE "Type", is_nullable "Null", COLUMN_KEY "Key" , column_default "Default", extra "Extra"
Replace With: Select
$parsed_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$real_table_name = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $parsed_table_name, $match) === 1 ? $match[3] : $parsed_table_name;
$database = !empty($match[2]) ? $match[2] : $db_name;

$result = $smcFunc['db_query']('', '
SELECT column_name "Field", COLUMN_TYPE "Type", is_nullable "Null", COLUMN_KEY "Key" , column_default "Default", extra "Extra"
Find: Select
'table_name' => $table_name,
'db_name' => $db_name,
Replace With: Select
'table_name' => $real_table_name,
'db_name' => $db_name,
Find: Select
function smf_db_list_indexes($table_name, $detail = false, $parameters = array())
{
global $smcFunc, $db_prefix;

$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

Replace With: Select
function smf_db_list_indexes($table_name, $detail = false, $parameters = array())
{
global $smcFunc, $db_prefix, $db_name;

$parsed_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$real_table_name = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $parsed_table_name, $match) === 1 ? $match[3] : $parsed_table_name;
$database = !empty($match[2]) ? $match[2] : $db_name;

Find: Select
FROM {raw:table_name}',
Replace With: Select
FROM {raw:table_name}
IN {raw:db}',
Find: Select
'table_name' => substr($table_name, 0, 1) == '`' ? $table_name : '`' . $table_name . '`',
Replace With: Select
'db' => $database,
'table_name' => $real_table_name,
Find: Select
// Auto increment is easy here!
Add Before: Select
$column = array_change_key_case($column);

Find: Select
{
$default = 'auto_increment';
Replace With: Select
$default = 'auto_increment';
Find: Select
}
elseif (isset($column['default']) && $column['default'] !== null)
$default = 'default \'' . $smcFunc['db_escape_string']($column['default']) . '\'';
Replace With: Select
// Make it null.
elseif (array_key_exists('default', $column) && is_null($column['default']))
$default = 'DEFAULT NULL';
// Numbers don't need quotes.
elseif (isset($column['default']) && is_numeric($column['default']))
$default = 'DEFAULT ' . (strpos($column['default'], '.') ? floatval($column['default']) : intval($column['default']));
// Non empty string.
elseif (isset($column['default']))
$default = 'DEFAULT \'' . $smcFunc['db_escape_string']($column['default']) . '\'';
Find: Select
// Sort out the size... and stuff...
Add Before: Select
// Backwards compatible with the nullable column.
if (isset($column['null']) && !isset($column['not_null']))
$column['not_null'] = !$column['null'];

./Sources/DbPackages-postgresql.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
global $reservedTables, $smcFunc, $db_package_log, $db_prefix;
Replace With: Select
global $reservedTables, $smcFunc, $db_package_log, $db_prefix, $db_name;
Find: Select
// Strip out the table name, we might not need it in some cases
$real_prefix = preg_match('~^("?)(.+?)\\1\\.(.*?)$~', $db_prefix, $match) === 1 ? $match[3] : $db_prefix;
Add After: Select
$database = !empty($match[2]) ? $match[2] : $db_name;
Find: Select
// With or without the database name, the fullname looks like this.
$full_table_name = str_replace('{db_prefix}', $real_prefix, $table_name);
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
Replace With: Select
// With or without the database name, the fullname looks like this.
$full_table_name = str_replace('{db_prefix}', $real_prefix, $table_name);
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
Find: Select
// First - no way do we touch SMF tables.
if (in_array(strtolower($table_name), $reservedTables))
Replace With: Select
// First - no way do we touch SMF tables.
if (in_array(strtolower($short_table_name), $reservedTables))
Find: Select
$db_package_log[] = array('remove_table', $table_name);
Replace With: Select
$db_package_log[] = array('remove_table', $short_table_name);
Find: Select
// This... my friends... is a function in a half - let's start by checking if the table exists!
$tables = $smcFunc['db_list_tables']();
Replace With: Select
// This... my friends... is a function in a half - let's start by checking if the table exists!
$tables = $smcFunc['db_list_tables']($database);
Find: Select
ALTER TABLE ' . $table_name . ' RENAME TO ' . $table_name . '_old',
Replace With: Select
ALTER TABLE ' . $short_table_name . ' RENAME TO ' . $short_table_name . '_old',
Find: Select
$table_query = 'CREATE TABLE ' . $table_name . "\n" . '(';
Replace With: Select
$table_query = 'CREATE TABLE ' . $short_table_name . "\n" . '(';
Find: Select
// If we have an auto increment do it!
Add Before: Select
$column = array_change_key_case($column);

Find: Select
if (!$old_table_exists)
$smcFunc['db_query']('', '
DROP SEQUENCE IF EXISTS ' . $table_name . '_seq',
Replace With: Select
if (!$old_table_exists)
$smcFunc['db_query']('', '
DROP SEQUENCE IF EXISTS ' . $short_table_name . '_seq',
Find: Select
CREATE SEQUENCE ' . $table_name . '_seq',
Replace With: Select
CREATE SEQUENCE ' . $short_table_name . '_seq',
Find: Select
$default = 'default nextval(\'' . $table_name . '_seq\')';
Replace With: Select
$default = 'default nextval(\'' . $short_table_name . '_seq\')';
Find: Select
if (isset($column['null']))
$column['not_null'] != $column['null'];
Replace With: Select
if (isset($column['null']) && !isset($column['not_null']))
$column['not_null'] = !$column['null'];
Find: Select
$columns = implode(',', $index['columns']);
Replace With: Select
// MySQL you can do a "column_name (length)", postgresql does not allow this. Strip it.
foreach ($index['columns'] as &$c)
$c = preg_replace('~\s+(\(\d+\))~', '', $c);

$idx_columns = implode(',', $index['columns']);
Find: Select
$index['name'] = implode('_', $index['columns']);
$index_queries[] = 'CREATE ' . (isset($index['type']) && $index['type'] == 'unique' ? 'UNIQUE' : '') . ' INDEX ' . $table_name . '_' . $index['name'] . ' ON ' . $table_name . ' (' . $columns . ')';
Replace With: Select
$index['name'] = trim(implode('_', preg_replace('~(\(\d+\))~', '', $index['columns'])));

$index_queries[] = 'CREATE ' . (isset($index['type']) && $index['type'] == 'unique' ? 'UNIQUE' : '') . ' INDEX ' . $short_table_name . '_' . $index['name'] . ' ON ' . $short_table_name . ' (' . $idx_columns . ')';
Find: Select
'table1' => $table_name,
'table2' => $table_name . '_old',
Replace With: Select
'table1' => $short_table_name,
'table2' => $short_table_name . '_old',
Find: Select
INSERT INTO ' . $table_name . '('
Replace With: Select
INSERT INTO ' . $short_table_name . '('
Find: Select
FROM ' . $table_name . '_old',
Replace With: Select
FROM ' . $short_table_name . '_old',
Find: Select
global $reservedTables, $smcFunc, $db_prefix;
Replace With: Select
global $reservedTables, $smcFunc, $db_prefix, $db_name;
Find: Select
// After stripping away the database name, this is what's left.
$real_prefix = preg_match('~^("?)(.+?)\\1\\.(.*?)$~', $db_prefix, $match) === 1 ? $match[3] : $db_prefix;
Add After: Select
$database = !empty($match[2]) ? $match[2] : $db_name;
Find: Select
// Get some aliases.
$full_table_name = str_replace('{db_prefix}', $real_prefix, $table_name);
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
Replace With: Select
// Get some aliases.
$full_table_name = str_replace('{db_prefix}', $real_prefix, $table_name);
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
Find: Select
// Does it exist?
if (in_array($full_table_name, $smcFunc['db_list_tables']()))
Replace With: Select
// Does it exist?
$tables = $smcFunc['db_list_tables']($database);
if (in_array($full_table_name, $tables))
Find: Select
$table_query = 'DROP TABLE ' . $table_name;
Replace With: Select
$table_query = 'DROP TABLE ' . $short_table_name;
Find: Select
$sequence_query = 'DROP SEQUENCE IF EXISTS ' . $table_name . '_seq';
Replace With: Select
$sequence_query = 'DROP SEQUENCE IF EXISTS ' . $short_table_name . '_seq';
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Log that we will want to uninstall this!
Replace With: Select
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$column_info = array_change_key_case($column_info);

// Log that we will want to uninstall this!
Find: Select
$db_package_log[] = array('remove_column', $table_name, $column_info['name']);
Replace With: Select
$db_package_log[] = array('remove_column', $short_table_name, $column_info['name']);
Find: Select
ALTER TABLE ' . $table_name . '
ADD COLUMN ' . $column_info['name'] . ' ' . $type;
Replace With: Select
ALTER TABLE ' . $short_table_name . '
ADD COLUMN ' . $column_info['name'] . ' ' . $type;
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Does it exist?
Replace With: Select
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Does it exist?
Find: Select
// Does it exist?
$columns = $smcFunc['db_list_columns']($table_name, true);
Replace With: Select
// Does it exist?
$columns = $smcFunc['db_list_columns']($table_name, true);

Find: Select
if ($column['name'] == $column_name)
Replace With: Select
if (strtolower($column['name']) == strtolower($column_name))
Find: Select
if ($column['auto'])
$smcFunc['db_query']('', '
DROP SEQUENCE IF EXISTS ' . $table_name . '_seq',
Replace With: Select
if ($column['auto'])
$smcFunc['db_query']('', '
DROP SEQUENCE IF EXISTS ' . $short_table_name . '_seq',
Find: Select
ALTER TABLE ' . $table_name . '
DROP COLUMN ' . $column_name,
Replace With: Select
ALTER TABLE ' . $short_table_name . '
DROP COLUMN ' . $column_name,
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// backward compatibility
Replace With: Select
$short_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$column_info = array_change_key_case($column_info);

// backward compatibility
Find: Select
if (isset($column_info['null']))
Replace With: Select
if (isset($column_info['null']) && !isset($column_info['not_null']))
Find: Select
ALTER TABLE ' . $table_name . '
RENAME COLUMN ' . $old_column . ' TO ' . $column_info['name'],
Replace With: Select
ALTER TABLE ' . $short_table_name . '
RENAME COLUMN ' . $old_column . ' TO ' . $column_info['name'],
Find: Select
if (isset($column_info['default']) && $column_info['default'] != $old_info['default'])
Replace With: Select
if (array_key_exists('default', $column_info) && $column_info['default'] != $old_info['default'])
Find: Select
$action = $column_info['default'] !== null ? 'SET DEFAULT \'' . $smcFunc['db_escape_string']($column_info['default']) . '\'' : 'DROP DEFAULT';
Replace With: Select
// Fix the default.
$default = '';
if (array_key_exists('default', $column_info) && is_null($column_info['default']))
$default = 'NULL';
elseif (isset($column_info['default']) && is_numeric($column_info['default']))
$default = strpos($column_info['default'], '.') ? floatval($column_info['default']) : intval($column_info['default']);
else
$default = '\'' . $smcFunc['db_escape_string']($column_info['default']) . '\'';

$action = $default === '' ? 'DROP DEFAULT' : 'SET DEFAULT ' . $default;
Find: Select
ALTER TABLE ' . $table_name . '
ALTER COLUMN ' . $column_info['name'] . ' ' . $action,
Replace With: Select
ALTER TABLE ' . $short_table_name . '
ALTER COLUMN ' . $column_info['name'] . ' ' . $action,
Find: Select
// Is it null - or otherwise?
Replace With: Select

// Is it null - or otherwise?
Find: Select
UPDATE ' . $table_name . '
Replace With: Select
UPDATE ' . $short_table_name . '
Find: Select
ALTER TABLE ' . $table_name . '
ALTER COLUMN ' . $column_info['name'] . ' ' . $action . ' NOT NULL',
Replace With: Select
ALTER TABLE ' . $short_table_name . '
ALTER COLUMN ' . $column_info['name'] . ' ' . $action . ' NOT NULL',
Find: Select
ALTER TABLE ' . $table_name . '
ADD COLUMN ' . $column_info['name'] . '_tempxx ' . $type,
Replace With: Select
ALTER TABLE ' . $short_table_name . '
ADD COLUMN ' . $column_info['name'] . '_tempxx ' . $type,
Find: Select
UPDATE ' . $table_name . '
SET ' . $column_info['name'] . '_tempxx = CAST(' . $column_info['name'] . ' AS ' . $type . ')',
Replace With: Select
UPDATE ' . $short_table_name . '
SET ' . $column_info['name'] . '_tempxx = CAST(' . $column_info['name'] . ' AS ' . $type . ')',
Find: Select
ALTER TABLE ' . $table_name . '
DROP COLUMN ' . $column_info['name'],
Replace With: Select
ALTER TABLE ' . $short_table_name . '
DROP COLUMN ' . $column_info['name'],
Find: Select
ALTER TABLE ' . $table_name . '
RENAME COLUMN ' . $column_info['name'] . '_tempxx TO ' . $column_info['name'],
Replace With: Select
ALTER TABLE ' . $short_table_name . '
RENAME COLUMN ' . $column_info['name'] . '_tempxx TO ' . $column_info['name'],
Find: Select
ALTER TABLE ' . $table_name . '
ALTER COLUMN ' . $column_info['name'] . ' SET DEFAULT \'0\'',
Replace With: Select
ALTER TABLE ' . $short_table_name . '
ALTER COLUMN ' . $column_info['name'] . ' SET DEFAULT \'0\'',
Find: Select
);
$smcFunc['db_query']('', '
DROP SEQUENCE IF EXISTS ' . $table_name . '_seq',
Replace With: Select
);
$smcFunc['db_query']('', '
DROP SEQUENCE IF EXISTS ' . $short_table_name . '_seq',
Find: Select
{
$smcFunc['db_query']('', '
DROP SEQUENCE IF EXISTS ' . $table_name . '_seq',
Replace With: Select
{
$smcFunc['db_query']('', '
DROP SEQUENCE IF EXISTS ' . $short_table_name . '_seq',
Find: Select
$smcFunc['db_query']('', '
CREATE SEQUENCE ' . $table_name . '_seq',
Replace With: Select
$smcFunc['db_query']('', '
CREATE SEQUENCE ' . $short_table_name . '_seq',
Find: Select
ALTER TABLE ' . $table_name . '
ALTER COLUMN ' . $column_info['name'] . ' SET DEFAULT nextval(\'' . $table_name . '_seq\')',
Replace With: Select
ALTER TABLE ' . $short_table_name . '
ALTER COLUMN ' . $column_info['name'] . ' SET DEFAULT nextval(\'' . $short_table_name . '_seq\')',
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// No columns = no index.
Replace With: Select
$parsed_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$real_table_name = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $parsed_table_name, $match) === 1 ? $match[3] : $parsed_table_name;

// No columns = no index.
Find: Select
$columns = implode(',', $index_info['columns']);
Add Before: Select

// MySQL you can do a "column_name (length)", postgresql does not allow this. Strip it.
foreach ($index_info['columns'] as &$c)
$c = preg_replace('~\s+(\(\d+\))~', '', $c);

Find: Select
$index_info['name'] = $table_name . implode('_', $index_info['columns']);
Replace With: Select
$index_info['name'] = trim(implode('_', preg_replace('~(\(\d+\))~', '', $index_info['columns'])));
Find: Select
$index_info['name'] = $table_name . $index_info['name'];
Replace With: Select
$index_info['name'] = $index_info['name'];
Find: Select
$db_package_log[] = array('remove_index', $table_name, $index_info['name']);
Replace With: Select
$db_package_log[] = array('remove_index', $parsed_table_name, $index_info['name']);
Find: Select
// Do we already have it?
Replace With: Select

// Do we already have it?
Find: Select
ALTER TABLE ' . $table_name . '
ADD PRIMARY KEY (' . $columns . ')',
Replace With: Select
ALTER TABLE ' . $real_table_name . '
ADD PRIMARY KEY (' . $columns . ')',
Find: Select
CREATE ' . (isset($index_info['type']) && $index_info['type'] == 'unique' ? 'UNIQUE' : '') . ' INDEX ' . $index_info['name'] . ' ON ' . $table_name . ' (' . $columns . ')',
Replace With: Select
CREATE ' . (isset($index_info['type']) && $index_info['type'] == 'unique' ? 'UNIQUE' : '') . ' INDEX ' . $real_table_name . '_' . $index_info['name'] . ' ON ' . $real_table_name . ' (' . $columns . ')',
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

// Better exist!
Replace With: Select
$parsed_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$real_table_name = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $parsed_table_name, $match) === 1 ? $match[3] : $parsed_table_name;

// Better exist!
Find: Select
if ($index_name != 'primary')
$index_name = $table_name . '_' . $index_name;
Replace With: Select

// Do not add the table name to the index if it is arleady there.
if ($index_name != 'primary' && strpos($index_name, $real_table_name) !== false)
$index_name = str_replace($real_table_name . '_', '', $index_name);
Find: Select
ALTER TABLE ' . $table_name . '
Replace With: Select
ALTER TABLE ' . $real_table_name . '
Find: Select
if ($index['name'] == $index_name)
Replace With: Select

if ($index['name'] == $index_name)
Find: Select
DROP INDEX ' . $index_name,
Replace With: Select
DROP INDEX ' . $real_table_name . '_' . $index_name,
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

return array(
Replace With: Select
$parsed_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$real_table_name = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $parsed_table_name, $match) === 1 ? $match[3] : $parsed_table_name;

return array(
Find: Select
'name' => $table_name,
Replace With: Select
'name' => $real_table_name,
Find: Select
function smf_db_list_columns($table_name, $detail = false, $parameters = array())
{
global $smcFunc, $db_prefix;
Replace With: Select
function smf_db_list_columns($table_name, $detail = false, $parameters = array())
{
global $smcFunc, $db_prefix, $db_name;
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

$result = $smcFunc['db_query']('', '
SELECT column_name, column_default, is_nullable, data_type, character_maximum_length
Replace With: Select
$parsed_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$real_table_name = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $parsed_table_name, $match) === 1 ? $match[3] : $parsed_table_name;
$database = !empty($match[2]) ? $match[2] : $db_name;

$result = $smcFunc['db_query']('', '
SELECT column_name, column_default, is_nullable, data_type, character_maximum_length
Find: Select
'schema_public' => 'public',
'table_name' => $table_name,
Replace With: Select
'schema_public' => 'public',
'table_name' => $real_table_name,
Find: Select
$default = strpos($row['column_default'], '::') === false ? $row['column_default'] : substr($row['column_default'], 0, strpos($row['column_default'], '::'));
Replace With: Select
$default = trim(strpos($row['column_default'], '::') === false ? $row['column_default'] : substr($row['column_default'], 0, strpos($row['column_default'], '::')), '\'');
Find: Select
'not_null' => !($row['is_nullable'] ? true : false),
'null' => $row['is_nullable'] ? true : false,
Replace With: Select
'not_null' => $row['is_nullable'] == 'YES' ? false : true,
'null' => $row['is_nullable'] == 'YES' ? true : false,
Find: Select
function smf_db_list_indexes($table_name, $detail = false, $parameters = array())
{
global $smcFunc, $db_prefix;
Replace With: Select
function smf_db_list_indexes($table_name, $detail = false, $parameters = array())
{
global $smcFunc, $db_prefix, $db_name;
Find: Select
$table_name = str_replace('{db_prefix}', $db_prefix, $table_name);

$result = $smcFunc['db_query']('', '
SELECT CASE WHEN i.indisprimary THEN 1 ELSE 0 END AS is_primary,
Replace With: Select
$parsed_table_name = str_replace('{db_prefix}', $db_prefix, $table_name);
$real_table_name = preg_match('~^(`?)(.+?)\\1\\.(.*?)$~', $parsed_table_name, $match) === 1 ? $match[3] : $parsed_table_name;
$database = !empty($match[2]) ? $match[2] : $db_name;

$result = $smcFunc['db_query']('', '
SELECT CASE WHEN i.indisprimary THEN 1 ELSE 0 END AS is_primary,
Find: Select
array(
'table_name' => $table_name,
Replace With: Select
array(
'table_name' => $real_table_name,
Find: Select
$row['name'] = str_replace($table_name . '_', '', $row['name']);
Replace With: Select
$row['name'] = str_replace($real_table_name . '_', '', $row['name']);

./Sources/Display.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
$user_info['alerts'] = max(0, $user_info['alerts'] - max(0, $smcFunc['db_affected_rows']()));
updateMemberData($user_info['id'], array('alerts' => $user_info['alerts']));
Replace With: Select
// If changes made, update the member record as well
if ($smcFunc['db_affected_rows']() > 0)
{
require_once($sourcedir . '/Profile-Modify.php');
$user_info['alerts'] = alert_count($user_info['id'], true);
updateMemberData($user_info['id'], array('alerts' => $user_info['alerts']));
}

./Sources/Groups.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
// Default to sub action 'index'.
Add Before: Select
call_integration_hook('integrate_manage_groups', array(&$subActions));

Find: Select
// CRUD $subActions as needed.
call_integration_hook('integrate_manage_groups', array(&$subActions));

// Call the actual function.
Replace With: Select
// Call the actual function.

./Sources/Help.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Set the page title to something relevant.
$context['page_title'] = $context['forum_name'] . ' - ' . $txt['help'];

// Don't show any template layers, just the popup sub template.
$context['template_layers'] = array();
$context['sub_template'] = 'popup';

// What help string should be used?
Replace With: Select
// What help string should be used?
Find: Select
$context['help_text'] = $_GET['help'];
Replace With: Select
fatal_lang_error('not_found', false, array(), 404);
Find: Select
$context['help_text'] = sprintf($context['help_text'], $scripturl, $context['session_id'], $context['session_var']);
Add After: Select

// Set the page title to something relevant.
$context['page_title'] = $context['forum_name'] . ' - ' . $txt['help'];

// Don't show any template layers, just the popup sub template.
$context['template_layers'] = array();
$context['sub_template'] = 'popup';

./Sources/Likes.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
}

/**
* Likes::insert()
Add Before: Select

// Check to see if there is an unread alert to delete as well...
$result = $smcFunc['db_query']('', '
SELECT id_alert, id_member FROM {db_prefix}user_alerts
WHERE content_id = {int:like_content}
AND content_type = {string:like_type}
AND id_member_started = {int:id_member_started}
AND content_action = {string:content_action}
AND is_read = {int:unread}',
array(
'like_content' => $this->_content,
'like_type' => $this->_type,
'id_member_started' => $this->_user['id'],
'content_action' => 'like',
'unread' => 0,
)
);
// Found one?
if ($smcFunc['db_num_rows']($result) == 1)
{
list($alert, $member) = $smcFunc['db_fetch_row']($result);

// Delete it
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}user_alerts
WHERE id_alert = {int:alert}',
array(
'alert' => $alert,
)
);
// Decrement counter for member who received the like
updateMemberData($member, array('alerts' => '-'));
}

./Sources/Load.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
'strtolower' => $utf8 ? function($string) use ($sourcedir, &$smcFunc)
Replace With: Select
'strtolower' => function($string) use (&$smcFunc)
Find: Select
$string = $smcFunc['normalize']($string);

if (!function_exists('mb_strtolower'))
{
require_once($sourcedir . '/Subs-Charset.php');
return utf8_strtolower($string);
}

return mb_strtolower($string, 'UTF-8');
} : 'strtolower',
'strtoupper' => $utf8 ? function($string) use ($sourcedir, &$smcFunc)
Replace With: Select
return $smcFunc['convert_case']($string, 'lower');
},
'strtoupper' => function($string) use (&$smcFunc)
Find: Select
$string = $smcFunc['normalize']($string);

if (!function_exists('mb_strtolower'))
{
require_once($sourcedir . '/Subs-Charset.php');
return utf8_strtoupper($string);
}

return mb_strtoupper($string, 'UTF-8');
} : 'strtoupper',
Replace With: Select
return $smcFunc['convert_case']($string, 'upper');
},
Find: Select
'ucfirst' => $utf8 ? function($string) use (&$smcFunc)
Replace With: Select
'ucfirst' => function($string) use (&$smcFunc)
Find: Select
return $smcFunc['strtoupper']($smcFunc['substr']($string, 0, 1)) . $smcFunc['substr']($string, 1);
} : 'ucfirst',
'ucwords' => $utf8 ? function($string) use (&$smcFunc)
Replace With: Select
return $smcFunc['convert_case']($string, 'ucfirst');
},
'ucwords' => function($string) use (&$smcFunc)
{
return $smcFunc['convert_case']($string, 'ucwords');
},
'convert_case' => function($string, $case, $simple = false, $form = 'c') use (&$smcFunc, $utf8, $ent_check, $fix_utf8mb4, $sourcedir)
Find: Select
$words = preg_split('~([\s\r\n\t]+)~', $string, -1, PREG_SPLIT_DELIM_CAPTURE);
for ($i = 0, $n = count($words); $i < $n; $i += 2)
$words[$i] = $smcFunc['ucfirst']($words[$i]);
return implode('', $words);
} : 'ucwords',
Replace With: Select
if (!$utf8)
{
switch ($case)
{
case 'upper':
$string = strtoupper($string);
break;

case 'lower':
case 'fold';
$string = strtolower($string);
break;

case 'title':
$string = ucwords(strtolower($string));
break;

case 'ucwords':
$string = ucwords($string);
break;

case 'ucfirst':
$string = ucfirst($string);
break;

default:
break;
}
}
else
{
// Convert numeric entities to characters, except special ones.
if (function_exists('mb_decode_numericentity') && strpos($string, '&#') !== false)
{
$string = strtr($ent_check($string), array(
'&#34;' => '&quot;',
'&#38;' => '&amp;',
'&#39;' => '&apos;',
'&#60;' => '&lt;',
'&#62;' => '&gt;',
'&#160;' => '&nbsp;',
));

$string = mb_decode_numericentity($string, array(0, 0x10FFFF, 0, 0xFFFFFF), 'UTF-8');
}

// Use optmized function for compatibility casefolding.
if ($form === 'kc_casefold' || ($case === 'fold' && $form === 'kc'))
{
$string = $smcFunc['normalize']($string, 'kc_casefold');
}
// Everything else.
else
{
require_once($sourcedir . '/Subs-Charset.php');
$string = $smcFunc['normalize'](utf8_convert_case($string, $case, $simple), $form);
}
}

return $fix_utf8mb4($string);
},
Find: Select
$modSettings['attachmentSizeLimit'] = empty($modSettings['attachmentSizeLimit']) ? $file_max_kb : min($modSettings['attachmentSizeLimit'], $file_max_kb);
Add After: Select
$modSettings['attachmentNumPerPostLimit'] = !isset($modSettings['attachmentNumPerPostLimit']) ? 4 : $modSettings['attachmentNumPerPostLimit'];
Find: Select
if (!empty($txt['lang_locale']) && !empty($modSettings['global_character_set']))
setlocale(LC_CTYPE, $txt['lang_locale'] . '.' . $modSettings['global_character_set']);
Replace With: Select
if (!empty($txt['lang_locale']))
{
if (strpos($txt['lang_locale'], '.') !== false)
$locale_variants = $txt['lang_locale'];
else
$locale_variants = array_unique(array_merge(
!empty($modSettings['global_character_set']) ? array($txt['lang_locale'] . '.' . $modSettings['global_character_set']) : array(),
!empty($context['utf8']) ? array($txt['lang_locale'] . '.UTF-8', $txt['lang_locale'] . '.UTF8', $txt['lang_locale'] . '.utf-8', $txt['lang_locale'] . '.utf8') : array(),
array($txt['lang_locale'])
));

setlocale(LC_CTYPE, $locale_variants);
}
Find: Select
$cache_api->connect();
Replace With: Select
if ($cache_api->connect() === false) return false;

./Sources/LogInOut.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
$other_passwords[] = hash_hmac('sha256', $_POST['passwrd'], $user_settings['password_salt']);
Add After: Select

// MyBB
$other_passwords[] = md5(md5($user_settings['password_salt']) . md5($_POST['passwrd']));

./Sources/ManageAttachments.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
array('int', 'attachmentNumPerPostLimit', 'subtext' => $txt['zero_for_no_limit'], 6),
Replace With: Select
array('int', 'attachmentNumPerPostLimit', 'subtext' => $txt['zero_for_no_limit'], 6, 'min' => 0),

./Sources/ManageBans.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Default the sub-action to 'view ban list'.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'list';

$context['page_title'] = $txt['ban_title'];
$context['sub_action'] = $_REQUEST['sa'];

// Tabs for browsing the different ban functions.
Replace With: Select
// Tabs for browsing the different ban functions.
Find: Select
// Call the right function for this sub-action.
Add Before: Select
// Default the sub-action to 'view ban list'.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'list';

$context['page_title'] = $txt['ban_title'];
$context['sub_action'] = $_REQUEST['sa'];

./Sources/ManageCalendar.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : $default;

// Set up the two tabs here...
Replace With: Select
// Set up the two tabs here...
Find: Select
call_helper($subActions[$_REQUEST['sa']]);
Add Before: Select
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : $default;

./Sources/ManageErrors.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
$context['filter']['value']['html'] = '<a href="' . $scripturl . '?action=profile;u=' . $id . '">' . $user_profile[$id]['real_name'] . '</a>';
Replace With: Select
$context['filter']['value']['html'] = '<a href="' . $scripturl . '?action=profile;u=' . $id . '">' . (isset($user_profile[$id]['real_name']) ? $user_profile[$id]['real_name'] : $txt['guest']) . '</a>';

./Sources/ManageLanguages.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// By default we're managing languages.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'edit';
$context['sub_action'] = $_REQUEST['sa'];

// Load up all the tabs...
Replace With: Select
// Load up all the tabs...
Find: Select
// Call the right function for this sub-action.
Add Before: Select
// By default we're managing languages.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'edit';
$context['sub_action'] = $_REQUEST['sa'];

Find: Select
$primary_settings = array('native_name' => 'string', 'lang_character_set' => 'string', 'lang_locale' => 'string', 'lang_rtl' => 'bool', 'lang_dictionary' => 'string', 'lang_recaptcha' => 'string');
Replace With: Select
$primary_settings = array('native_name' => 'string', 'lang_character_set' => 'string', 'lang_locale' => 'string', 'lang_rtl' => 'string', 'lang_dictionary' => 'string', 'lang_recaptcha' => 'string');

./Sources/ManageMembergroups.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Default to sub action 'index' or 'settings' depending on permissions.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : (allowedTo('manage_membergroups') ? 'index' : 'settings');

// Is it elsewhere?
if (isset($subActions[$_REQUEST['sa']][2]))
require_once($sourcedir . '/' . $subActions[$_REQUEST['sa']][2]);

// Do the permission check, you might not be allowed her.
isAllowedTo($subActions[$_REQUEST['sa']][1]);

// Language and template stuff, the usual.
Replace With: Select
// Language and template stuff, the usual.
Find: Select
// Call the right function.
Add Before: Select
// Default to sub action 'index' or 'settings' depending on permissions.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : (allowedTo('manage_membergroups') ? 'index' : 'settings');

// Is it elsewhere?
if (isset($subActions[$_REQUEST['sa']][2]))
require_once($sourcedir . '/' . $subActions[$_REQUEST['sa']][2]);

// Do the permission check, you might not be allowed here.
isAllowedTo($subActions[$_REQUEST['sa']][1]);

./Sources/ManageNews.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
call_integration_hook('integrate_manage_news', array(&$subActions));

// Default to sub action 'main' or 'settings' depending on permissions.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : (allowedTo('edit_news') ? 'editnews' : (allowedTo('send_mail') ? 'mailingmembers' : 'settings'));

// Have you got the proper permissions?
isAllowedTo($subActions[$_REQUEST['sa']][1]);

// Create the tabs for the template.
Replace With: Select
// Create the tabs for the template.
Find: Select
// Force the right area...
Add Before: Select
call_integration_hook('integrate_manage_news', array(&$subActions));

// Default to sub action 'main' or 'settings' depending on permissions.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : (allowedTo('edit_news') ? 'editnews' : (allowedTo('send_mail') ? 'mailingmembers' : 'settings'));

// Have you got the proper permissions?
isAllowedTo($subActions[$_REQUEST['sa']][1]);

./Sources/ManagePaid.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Default the sub-action to 'view subscriptions', but only if they have already set things up..
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : (!empty($modSettings['paid_currency_symbol']) && !empty($modSettings['paid_enabled']) ? 'view' : 'settings');

// Make sure you can do this.
isAllowedTo($subActions[$_REQUEST['sa']][1]);

$context['page_title'] = $txt['paid_subscriptions'];
Replace With: Select
$context['page_title'] = $txt['paid_subscriptions'];
Find: Select
// Call the right function for this sub-action.
Add Before: Select
// Default the sub-action to 'view subscriptions', but only if they have already set things up..
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : (!empty($modSettings['paid_currency_symbol']) && !empty($modSettings['paid_enabled']) ? 'view' : 'settings');

// Make sure you can do this.
isAllowedTo($subActions[$_REQUEST['sa']][1]);

./Sources/ManagePermissions.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) && empty($subActions[$_REQUEST['sa']]['disabled']) ? $_REQUEST['sa'] : (allowedTo('manage_permissions') ? 'index' : 'settings');
isAllowedTo($subActions[$_REQUEST['sa']][1]);

// Create the tabs for the template.
Replace With: Select
// Create the tabs for the template.
Find: Select
call_helper($subActions[$_REQUEST['sa']][0]);
Add Before: Select
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) && empty($subActions[$_REQUEST['sa']]['disabled']) ? $_REQUEST['sa'] : (allowedTo('manage_permissions') ? 'index' : 'settings');

isAllowedTo($subActions[$_REQUEST['sa']][1]);

./Sources/ManagePosts.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Default the sub-action to 'posts'.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'posts';

$context['page_title'] = $txt['manageposts_title'];
Replace With: Select
$context['page_title'] = $txt['manageposts_title'];
Find: Select
// Call the right function for this sub-action.
Add Before: Select
// Default the sub-action to 'posts'.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'posts';

./Sources/ManageSearch.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Default the sub-action to 'edit search settings'.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'weights';

$context['sub_action'] = $_REQUEST['sa'];

// Create the tabs for the template.
Replace With: Select
// Create the tabs for the template.
Find: Select
// Call the right function for this sub-action.
Add Before: Select
// Default the sub-action to 'edit search settings'.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'weights';

$context['sub_action'] = $_REQUEST['sa'];

Find: Select
$smcFunc['db_query']('', '
ALTER TABLE {db_prefix}messages
DROP INDEX ' . implode(',
DROP INDEX ', $context['fulltext_index']),
array(
'db_error_skip' => true,
)
);
Replace With: Select
if ($db_type == 'postgresql')
$smcFunc['db_query']('', '
DROP INDEX IF EXISTS {db_prefix}messages_ftx',
array(
'db_error_skip' => true,
)
);
else
$smcFunc['db_query']('', '
ALTER TABLE {db_prefix}messages
DROP INDEX ' . implode(',
DROP INDEX ', $context['fulltext_index']),
array(
'db_error_skip' => true,
)
);

./Sources/ManageServer.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
// By default we're editing the core settings
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'general';
$context['sub_action'] = $_REQUEST['sa'];

// Warn the user if there's any relevant information regarding Settings.php.
Replace With: Select
// Warn the user if there's any relevant information regarding Settings.php.
Find: Select
// Call the right function for this sub-action.
Add Before: Select
// By default we're editing the core settings
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'general';

$context['sub_action'] = $_REQUEST['sa'];

./Sources/ManageSmileys.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Default the sub-action to 'edit smiley settings'.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'editsets';

$context['page_title'] = $txt['smileys_manage'];
$context['sub_action'] = $_REQUEST['sa'];
$context['sub_template'] = $context['sub_action'];

// Load up all the tabs...
Replace With: Select
// Load up all the tabs...
Find: Select
// Call the right function for this sub-action.
Add Before: Select
// Default the sub-action to 'edit smiley settings'.
$_REQUEST['sa'] = isset($_REQUEST['sa']) && isset($subActions[$_REQUEST['sa']]) ? $_REQUEST['sa'] : 'editsets';

$context['page_title'] = $txt['smileys_manage'];

$context['sub_template'] = $context['sub_action'] = $_REQUEST['sa'];

./Sources/MessageIndex.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
if (!empty($_REQUEST['start']) && (!is_numeric($_REQUEST['start']) || $_REQUEST['start'] % $context['messages_per_page'] != 0))
Replace With: Select
if (!empty($_REQUEST['start']) && (!is_numeric($_REQUEST['start']) || $_REQUEST['start'] % $context['topics_per_page'] != 0))

./Sources/ModerationCenter.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
/**
* Browse all the reported users...
*/
function ReportedMembers()
{
global $txt, $context, $scripturl, $smcFunc;

loadTemplate('ModerationCenter');

// Set an empty var for the server response.
$context['report_member_action'] = '';

// Put the open and closed options into tabs, because we can...
$context[$context['moderation_menu_name']]['tab_data'] = array(
'title' => $txt['mc_reported_members'],
'help' => '',
'description' => $txt['mc_reported_members_desc'],
);

isAllowedTo('moderate_forum');

// Set up the comforting bits...
$context['page_title'] = $txt['mc_reported_members'];
$context['sub_template'] = 'reported_members';

// Are we viewing open or closed reports?
$context['view_closed'] = isset($_GET['sa']) && $_GET['sa'] == 'closed' ? 1 : 0;

// Are we doing any work?
if ((isset($_GET['ignore']) || isset($_GET['close'])) && isset($_GET['rid']))
{
checkSession('get');
$_GET['rid'] = (int) $_GET['rid'];

// Update the report...
$smcFunc['db_query']('', '
UPDATE {db_prefix}log_reported
SET ' . (isset($_GET['ignore']) ? 'ignore_all = {int:ignore_all}' : 'closed = {int:closed}') . '
WHERE id_report = {int:id_report}',
array(
'ignore_all' => isset($_GET['ignore']) ? (int) $_GET['ignore'] : 0,
'closed' => isset($_GET['close']) ? (int) $_GET['close'] : 0,
'id_report' => $_GET['rid'],
)
);

// Get the board, topic and message for this report
$request = $smcFunc['db_query']('', '
SELECT id_member, membername
FROM {db_prefix}log_reported
WHERE id_report = {int:id_report}',
array(
'id_report' => $_GET['rid'],
)
);

// Set up the data for the log...
$extra = array('report' => $_GET['rid']);
list($extra['member'], $extra['membername']) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);

// Stick this in string format for consistency
$extra['member'] = (string) $extra['member'];

// Tell the user about it.
$context['report_member_action'] = isset($_GET['ignore']) ? (!empty($_GET['ignore']) ? 'ignore' : 'unignore') : (!empty($_GET['close']) ? 'close' : 'open');

// Log this action
logAction($context['report_member_action'] . '_user_report', $extra);

// Time to update.
updateSettings(array('last_mod_report_action' => time()));
recountOpenReports('members');
}
elseif (isset($_POST['close']) && isset($_POST['close_selected']))
{
checkSession();

// All the ones to update...
$toClose = array();
foreach ($_POST['close'] as $rid)
$toClose[] = (int) $rid;

if (!empty($toClose))
{
// Get the data for each of these reports
$request = $smcFunc['db_query']('', '
SELECT id_report, id_member, membername
FROM {db_prefix}log_reported
WHERE id_report IN ({array_int:report_list})',
array(
'report_list' => $toClose,
)
);

$logs = array();
while ($reports = $smcFunc['db_fetch_assoc']($request))
{
$logs[] = array(
'action' => 'close_user_report',
'log_type' => 'moderate',
'extra' => array(
'report' => $reports['id_report'],
'membername' => $reports['membername'],
'member' => (string) $reports['id_member'],
),
);
}

$smcFunc['db_free_result']($request);

// Log the closing of all the reports
logActions($logs);

$smcFunc['db_query']('', '
UPDATE {db_prefix}log_reported
SET closed = {int:is_closed}
WHERE id_report IN ({array_int:report_list})',
array(
'report_list' => $toClose,
'is_closed' => 1,
)
);

// Time to update.
updateSettings(array('last_mod_report_action' => time()));
recountOpenReports('members');
}

// Go on and tell the result.
$context['report_member_action'] = 'close_all';
}

// How many entries are we viewing?
$request = $smcFunc['db_query']('', '
SELECT COUNT(*)
FROM {db_prefix}log_reported AS lr
WHERE lr.closed = {int:view_closed}
AND lr.id_board = {int:not_a_reported_post}',
array(
'view_closed' => $context['view_closed'],
'not_a_reported_post' => 0,
)
);
list ($context['total_reports']) = $smcFunc['db_fetch_row']($request);
$smcFunc['db_free_result']($request);

// So, that means we can page index, yes?
$context['page_index'] = constructPageIndex($scripturl . '?action=moderate;area=reportedmembers' . ($context['view_closed'] ? ';sa=closed' : ''), $_GET['start'], $context['total_reports'], 10);
$context['start'] = $_GET['start'];

// By George, that means we in a position to get the reports, golly good.
$request = $smcFunc['db_query']('', '
SELECT lr.id_report, lr.id_member, lr.time_started, lr.time_updated, lr.num_reports, lr.closed, lr.ignore_all,
COALESCE(mem.real_name, lr.membername) AS user_name, COALESCE(mem.id_member, 0) AS id_user
FROM {db_prefix}log_reported AS lr
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = lr.id_member)
WHERE lr.closed = {int:view_closed}
AND lr.id_board = {int:not_a_reported_post}
ORDER BY lr.time_updated DESC
LIMIT {int:limit}, {int:max}',
array(
'view_closed' => $context['view_closed'],
'not_a_reported_post' => 0,
'limit' => $context['start'],
'max' => 10,
)
);
$context['reports'] = array();
$report_ids = array();
for ($i = 0; $row = $smcFunc['db_fetch_assoc']($request); $i++)
{
$report_ids[] = $row['id_report'];
$context['reports'][$row['id_report']] = array(
'id' => $row['id_report'],
'report_href' => $scripturl . '?action=moderate;area=reportedmembers;report=' . $row['id_report'],
'user' => array(
'id' => $row['id_user'],
'name' => $row['user_name'],
'link' => $row['id_user'] ? '<a href="' . $scripturl . '?action=profile;u=' . $row['id_user'] . '">' . $row['user_name'] . '</a>' : $row['user_name'],
'href' => $scripturl . '?action=profile;u=' . $row['id_user'],
),
'comments' => array(),
'time_started' => timeformat($row['time_started']),
'last_updated' => timeformat($row['time_updated']),
'num_reports' => $row['num_reports'],
'closed' => $row['closed'],
'ignore' => $row['ignore_all']
);
}
$smcFunc['db_free_result']($request);

// Now get all the people who reported it.
if (!empty($report_ids))
{
$request = $smcFunc['db_query']('', '
SELECT lrc.id_comment, lrc.id_report, lrc.time_sent, lrc.comment,
COALESCE(mem.id_member, 0) AS id_member, COALESCE(mem.real_name, lrc.membername) AS reporter
FROM {db_prefix}log_reported_comments AS lrc
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = lrc.id_member)
WHERE lrc.id_report IN ({array_int:report_list})',
array(
'report_list' => $report_ids,
)
);
while ($row = $smcFunc['db_fetch_assoc']($request))
{
$context['reports'][$row['id_report']]['comments'][] = array(
'id' => $row['id_comment'],
'message' => $row['comment'],
'time' => timeformat($row['time_sent']),
'member' => array(
'id' => $row['id_member'],
'name' => empty($row['reporter']) ? $txt['guest'] : $row['reporter'],
'link' => $row['id_member'] ? '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['reporter'] . '</a>' : (empty($row['reporter']) ? $txt['guest'] : $row['reporter']),
'href' => $row['id_member'] ? $scripturl . '?action=profile;u=' . $row['id_member'] : '',
),
);
}
$smcFunc['db_free_result']($request);
}

$context['report_manage_bans'] = allowedTo('manage_bans');
}

/**
* Act as an entrace for all group related activity.
Replace With: Select
/**
* Act as an entrace for all group related activity.

./Sources/PersonalMessage.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Execute the query!
Add Before: Select
$group_by = $context['folder'] == 'sent' ? '
GROUP BY pm.id_pm, pm.subject, pm.id_member_from, pm.body, pm.msgtime, pm.from_name' .
($context['sort_by'] == 'name' ? ', mem.real_name' : '')
: '';

Find: Select
WHERE pm.id_pm IN ({array_int:display_pms})' . ($context['folder'] == 'sent' ? '
GROUP BY pm.id_pm, pm.subject, pm.id_member_from, pm.body, pm.msgtime, pm.from_name' : '') . '
Replace With: Select
WHERE pm.id_pm IN ({array_int:display_pms})' .
$group_by . '

./Sources/Post.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
// Do we need to show the visual verification image?
Add Before: Select
// Previously uploaded attachments have 2 flavors:
// - Existing post - at this point, now in $context['current_attachments']
// - Just added, current session only - at this point, now in $_SESSION['already_attached']
// We need to make sure *all* of these are in $context['current_attachments'], otherwise they won't show in dropzone during edits.
if (!empty($_SESSION['already_attached']))
{
$request = $smcFunc['db_query']('', '
SELECT
a.id_attach, a.filename, COALESCE(a.size, 0) AS filesize, a.approved, a.mime_type, a.id_thumb
FROM {db_prefix}attachments AS a
WHERE a.attachment_type = {int:attachment_type}
AND a.id_attach IN ({array_int:just_uploaded})',
array(
'attachment_type' => 0,
'just_uploaded' => $_SESSION['already_attached']
)
);

while ($row = $smcFunc['db_fetch_assoc']($request))
{
$context['current_attachments'][$row['id_attach']] = array(
'name' => $smcFunc['htmlspecialchars']($row['filename']),
'size' => $row['filesize'],
'attachID' => $row['id_attach'],
'approved' => $row['approved'],
'mime_type' => $row['mime_type'],
'thumb' => $row['id_thumb'],
);
}
$smcFunc['db_free_result']($request);
}

Find: Select
$context['num_allowed_attachments'] = min(ini_get('max_file_uploads'), (empty($modSettings['attachmentNumPerPostLimit']) ? 50 : $modSettings['attachmentNumPerPostLimit']));
Replace With: Select
$context['num_allowed_attachments'] = !isset($modSettings['attachmentNumPerPostLimit']) ? 4 : $modSettings['attachmentNumPerPostLimit'];
Find: Select
// This will save some time...
if (empty($approve_has_changed))
unset($msgOptions['approved']);

modifyPost($msgOptions, $topicOptions, $posterOptions);
}
Replace With: Select
modifyPost($msgOptions, $topicOptions, $posterOptions);
}
Find: Select
'modify_reason' => (isset($_POST['modify_reason']) ? $_POST['modify_reason'] : ''),
Add After: Select
'approved' => (isset($row['approved']) ? $row['approved'] : null),

./Sources/Profile-Modify.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
'permission' => 'profile_website',
'link_with' => 'website',
Add After: Select
'input_validate' => function(&$value) use ($smcFunc)
{
if (mb_strlen($value) > 250)
return 'website_title_too_long';

return true;
},
Find: Select
if ($row['mask'] == 'nohtml' && ($valueReference != strip_tags($valueReference) || $value != filter_var($value, FILTER_SANITIZE_FULL_SPECIAL_CHARS) || preg_match('/<(.+?)[\s]*\/?[\s]*>/si', $valueReference)))
Replace With: Select
if ($row['mask'] == 'nohtml' && ($valueReference != strip_tags($valueReference) || $value != $smcFunc['htmlspecialchars']($value, ENT_NOQUOTES) || preg_match('/<(.+?)[\s]*\/?[\s]*>/si', $valueReference)))
Find: Select
SELECT id_alert, content_id, content_type, content_action
Replace With: Select
SELECT id_alert, content_id, content_type, content_action, is_read
Find: Select
foreach ($alerts as $id_alert => $alert)
{
if (!$alert['visible'])
unset($alerts[$id_alert]);
}
Replace With: Select
$deletes = array();
$num_unread_deletes = 0;
foreach ($alerts as $id_alert => $alert)
{
if (!$alert['visible'])
{
if (empty($alert['is_read']))
$num_unread_deletes++;

unset($alerts[$id_alert]);
$deletes[] = $id_alert;
}
}

// Penultimate task - delete these orphaned, invisible alerts, otherwise they might hang around forever.
// This can happen if they are deleted or moved to a board this user cannot access.
// Note that unread alerts are never purged.
if (!empty($deletes))
{
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}user_alerts
WHERE id_alert IN ({array_int:alerts})',
array(
'alerts' => $deletes,
)
);
}

// One last thing - tweak counter on member record.
// Do it directly, as updateMemberData() calls this function, and may create a loop.
// Note that $user_info is not populated when this is invoked via cron, hence the CASE statement.
if ($num_unread_deletes > 0)
{
$smcFunc['db_query']('', '
UPDATE {db_prefix}members
SET alerts =
CASE
WHEN alerts < {int:unread_deletes} THEN 0
ELSE alerts - {int:unread_deletes}
END
WHERE id_member = {int:member}',
array(
'unread_deletes' => $num_unread_deletes,
'member' => $memID,
)
);
}

./Sources/Profile-View.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
$context['ip'] = $context['ip']['low'] . ' - ' . $context['ip']['high'];
Replace With: Select
$context['ip'] = $context['ip']['low'] . '-' . $context['ip']['high'];

./Sources/Profile.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
$context['unread_alerts'] = fetch_alerts($memID, false, !empty($counter) ? $cur_profile['alerts'] - $counter : $limit, 0, !isset($_REQUEST['counter']));

// This shouldn't happen, but just in case...
if (empty($counter) && $cur_profile['alerts'] != count($context['unread_alerts']))
updateMemberData($memID, array('alerts' => count($context['unread_alerts'])));
Replace With: Select
$context['unread_alerts'] = fetch_alerts($memID, false, !empty($counter) ? $cur_profile['alerts'] - $counter : $limit, 0, !isset($_REQUEST['counter']));

./Sources/Recent.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
SELECT lt.id_topic, lt.id_msg
FROM {db_prefix}topics AS t
Replace With: Select
SELECT lt.id_topic, lt.id_msg, lt.unwatched
FROM {db_prefix}topics AS t
Find: Select
AND t.approved = {int:is_approved}' : '') . ' AND lt.unwatched != 1',
Replace With: Select
AND t.approved = {int:is_approved}' : ''),
Find: Select
AND t.id_last_msg > {int:earliest_msg}' : '') . '
AND COALESCE(lt.id_msg, lmr.id_msg, 0) < t.id_last_msg' . ($modSettings['postmod_active'] ? '
AND t.approved = {int:is_approved}' : ''),
Replace With: Select
AND t.id_last_msg > {int:earliest_msg}' : '') . '
AND COALESCE(lt.id_msg, lmr.id_msg, 0) < t.id_last_msg' . ($modSettings['postmod_active'] ? '
AND t.approved = {int:is_approved}' : '') . '
AND COALESCE(lt.unwatched, 0) != 1',
Find: Select
ORDER BY {raw:sort}
Add Before: Select
AND COALESCE(lt.unwatched, 0) != 1
Find: Select
GROUP BY m.id_topic',
Add Before: Select
AND COALESCE(lt.unwatched, 0) != 1

./Sources/Register.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
if (!isset($_POST['new_email']))
Replace With: Select
// Notify the admin about new activations, but not re-activations.
if (empty($row['is_activated']))

./Sources/Security.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
$user_permissions = $user_info['permissions'];
Replace With: Select
$user_permissions = (array) $user_info['permissions'];
Find: Select
if (count(array_intersect($permission, $user_permissions)) != 0)
return true;
// You aren't allowed, by default.
else
return false;
Replace With: Select
return array_intersect($permission, $user_permissions) != [];
Find: Select
$context['cors_headers'] += implode(',', $cors_headers);
Replace With: Select
$context['cors_headers'] .= ',' . implode(',', $cors_headers);

./Sources/ShowAttachments.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
$file['etag'] = '"' . sha1_file($file['filePath']) . '"';
Replace With: Select
$file['etag'] = $file['exists'] ? sha1_file($file['filePath']) : '';
Find: Select
$thumbFile['etag'] = '"' . sha1_file($thumbFile['filePath']) . '"';
Replace With: Select
$thumbFile['etag'] = $thumbFile['exists'] ? sha1_file($thumbFile['filePath']) : '';
Find: Select
header('etag: ' . $file['etag']);
Replace With: Select
header('etag: "' . $file['etag'] . '"');

./Sources/Subs-Attachments.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
if (!empty($context['preview_message']))
$msgIDs[] = 0;
Replace With: Select
// Ensure that $msgIDs doesn't contain zero or non-integers.
$msgIDs = array_filter(array_map('intval', $msgIDs));
Find: Select
if (!empty($msgIDs))
Replace With: Select
if (!empty($msgIDs) || !empty($_SESSION['attachments_can_preview']))
Find: Select
$request = $smcFunc['db_query']('', '
SELECT
Add Before: Select
// Where clause - there may or may not be msg ids, & may or may not be attachs to preview,
// depending on post vs edit, inserted or not, preview or not, post error or not, etc.
// Either way, they may be needed in a display of a list of posts or in the dropzone 'mock' list of thumbnails.
$msg_or_att = '';
if (!empty($msgIDs))
$msg_or_att .= 'a.id_msg IN ({array_int:message_id}) ';
if (!empty($msgIDs) && !empty($_SESSION['attachments_can_preview']))
$msg_or_att .= 'OR ';
if (!empty($_SESSION['attachments_can_preview']))
$msg_or_att .= 'a.id_attach IN ({array_int:preview_attachments})';

// This tries to get all attachments for the page being displayed, to build a cache of attach info.
// This is also being used by POST, so it may need to grab attachs known only in the session.
Find: Select
AND a.id_msg IN ({array_int:message_id})',
Replace With: Select
AND (' . $msg_or_att . ')',
Find: Select
'message_id' => $msgIDs,
'attachment_type' => 0,
Add After: Select
'preview_attachments' => !empty($_SESSION['attachments_can_preview']) ? array_keys(array_filter($_SESSION['attachments_can_preview'])) : array(0),

./Sources/Subs-Boards.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Before we add new access_groups or deny_groups, remove all of the old entries
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}board_permissions_view
WHERE id_board = {int:selected_board}',
array(
'selected_board' => $board_id,
)
);
Replace With: Select
if (!empty($boardOptions['deny_groups']) || !empty($boardOptions['access_groups'])) {
// Before we add new access_groups or deny_groups, remove all of the old entries
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}board_permissions_view
WHERE id_board = {int:selected_board}',
array(
'selected_board' => $board_id,
)
);
}

./Sources/Subs-Charset.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
/**
* Converts the given UTF-8 string into lowercase.
Add Before: Select
require_once($sourcedir . '/Unicode/Metadata.php');

Find: Select
global $sourcedir;

$string = (string) $string;

$chars = preg_split('/(.)/su', $string, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

if ($chars === false)
return false;

require_once($sourcedir . '/Unicode/CaseLower.php');

$substitutions = utf8_strtolower_maps();

foreach ($chars as &$char)
$char = isset($substitutions[$char]) ? $substitutions[$char] : $char;

return implode('', $chars);
Replace With: Select
return utf8_convert_case($string, 'lower');
Find: Select
global $sourcedir;

$string = (string) $string;

$chars = preg_split('/(.)/su', $string, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

if ($chars === false)
return false;

require_once($sourcedir . '/Unicode/CaseUpper.php');

$substitutions = utf8_strtoupper_maps();

foreach ($chars as &$char)
$char = isset($substitutions[$char]) ? $substitutions[$char] : $char;

return implode('', $chars);
Replace With: Select
return utf8_convert_case($string, 'upper');
Find: Select
function utf8_casefold($string)
{
global $sourcedir;

$string = (string) $string;

$chars = preg_split('/(.)/su', $string, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

if ($chars === false)
return false;

Replace With: Select
function utf8_casefold($string)
{
return utf8_convert_case($string, 'fold');
}

/**
* Converts the case of the given UTF-8 string.
*
* @param string $string The string.
* @param string $case One of 'upper', 'lower', 'fold', 'title', 'ucfirst', or 'ucwords'.
* @param bool $simple If true, use simple maps instead of full maps. Default: false.
* @return string A version of $string converted to the specified case.
*/
function utf8_convert_case($string, $case, $simple = false)
{
global $sourcedir, $txt;

$simple = !empty($simple);

$lang = empty($txt['lang_locale']) ? '' : substr($txt['lang_locale'], 0, 2);

Find: Select
require_once($sourcedir . '/Unicode/CaseFold.php');

$substitutions = utf8_casefold_maps();

foreach ($chars as &$char)
$char = isset($substitutions[$char]) ? $substitutions[$char] : $char;

Replace With: Select
// The main case conversion logic
if (in_array($case, array('upper', 'lower', 'fold')))
{
$chars = preg_split('/(.)/su', $string, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

if ($chars === false)
return false;

switch ($case)
{
case 'upper':
require_once($sourcedir . '/Unicode/CaseUpper.php');

$substitutions = $simple ? utf8_strtoupper_simple_maps() : utf8_strtoupper_maps();

// Turkish & Azeri conditional casing, part 1.
if (in_array($lang, array('tr', 'az')))
$substitutions['i'] = 'İ';

break;

case 'lower':
require_once($sourcedir . '/Unicode/CaseLower.php');

Find: Select
return implode('', $chars);
Replace With: Select
$substitutions = $simple ? utf8_strtolower_simple_maps() : utf8_strtolower_maps();

// Turkish & Azeri conditional casing, part 1.
if (in_array($lang, array('tr', 'az')))
{
$substitutions['İ'] = 'i';
$substitutions['I' . "\xCC\x87"] = 'i';
$substitutions['I'] = 'ı';
}

break;

case 'fold':
require_once($sourcedir . '/Unicode/CaseFold.php');

$substitutions = $simple ? utf8_casefold_simple_maps() : utf8_casefold_maps();

break;
}

foreach ($chars as &$char)
$char = isset($substitutions[$char]) ? $substitutions[$char] : $char;

$string = implode('', $chars);
}
elseif (in_array($case, array('title', 'ucfirst', 'ucwords')))
{
require_once($sourcedir . '/Unicode/RegularExpressions.php');
require_once($sourcedir . '/Unicode/CaseUpper.php');
require_once($sourcedir . '/Unicode/CaseTitle.php');

$prop_classes = utf8_regex_properties();

$upper = $simple ? utf8_strtoupper_simple_maps() : utf8_strtoupper_maps();

// Turkish & Azeri conditional casing, part 1.
if (in_array($lang, array('tr', 'az')))
$upper['i'] = 'İ';

$title = array_merge($upper, $simple ? utf8_titlecase_simple_maps() : utf8_titlecase_maps());

switch ($case)
{
case 'title':
$string = utf8_convert_case($string, 'lower', $simple);
$regex = '/(?:^|[^\w' . $prop_classes['Case_Ignorable'] . '])\K(\p{L})/u';
break;

case 'ucwords':
$regex = '/(?:^|[^\w' . $prop_classes['Case_Ignorable'] . '])\K(\p{L})(?=[' . $prop_classes['Case_Ignorable'] . ']*(?:(?<upper>\p{Lu})|\w?))/u';
break;

case 'ucfirst':
$regex = '/^[^\w' . $prop_classes['Case_Ignorable'] . ']*\K(\p{L})(?=[' . $prop_classes['Case_Ignorable'] . ']*(?:(?<upper>\p{Lu})|\w?))/u';
break;
}

$string = preg_replace_callback(
$regex,
function($matches) use ($upper, $title)
{
// If second letter is uppercase, use uppercase for first letter.
// Otherwise, use titlecase for first letter.
$case = !empty($matches['upper']) ? 'upper' : 'title';

$matches[1] = isset($$case[$matches[1]]) ? $$case[$matches[1]] : $matches[1];

return $matches[1];
},
$string
);
}

// If casefolding, we're done.
if ($case === 'fold')
return $string;

// Handle conditional casing situations...
$substitutions = array();
$replacements = array();

// Greek conditional casing, part 1: Fix lowercase sigma.
// Note that this rule doesn't depend on $txt['lang_locale'].
if ($case !== 'upper' && strpos($string, 'ς') !== false || strpos($string, 'σ') !== false)
{
require_once($sourcedir . '/Unicode/RegularExpressions.php');

$prop_classes = utf8_regex_properties();

// First, convert all lowercase sigmas to regular form.
$substitutions['ς'] = 'σ';

// Then convert any at the end of words to final form.
$replacements['/\Bσ([' . $prop_classes['Case_Ignorable'] . ']*)(?!\p{L})/u'] = 'ς$1';
}
// Greek conditional casing, part 2: No accents on uppercase strings.
if ($lang === 'el' && $case === 'upper')
{
// Composed forms.
$substitutions += array(
'Ά' => 'Α', 'Ἀ' => 'Α', 'Ἁ' => 'Α', 'Ὰ' => 'Α', 'Ᾰ' => 'Α',
'Ᾱ' => 'Α', 'Α' => 'Α', 'Α' => 'Α', 'Ἂ' => 'Α', 'Ἃ' => 'Α',
'Ἄ' => 'Α', 'Ἅ' => 'Α', 'Ἆ' => 'Α', 'Ἇ' => 'Α', 'Ὰ' => 'Α',
'Ά' => 'Α', 'Α' => 'Α', 'Ἀ' => 'Α', 'Ἁ' => 'Α', 'Ἂ' => 'Α',
'Ἃ' => 'Α', 'Ἄ' => 'Α', 'Ἅ' => 'Α', 'Ἆ' => 'Α', 'Ἇ' => 'Α',
'Έ' => 'Ε', 'Ἐ' => 'Ε', 'Ἑ' => 'Ε', 'Ὲ' => 'Ε', 'Ἒ' => 'Ε',
'Ἓ' => 'Ε', 'Ἔ' => 'Ε', 'Ἕ' => 'Ε', 'Ή' => 'Η', 'Ἠ' => 'Η',
'Ἡ' => 'Η', 'Ὴ' => 'Η', 'Η' => 'Η', 'Η' => 'Η', 'Ἢ' => 'Η',
'Ἣ' => 'Η', 'Ἤ' => 'Η', 'Ἥ' => 'Η', 'Ἦ' => 'Η', 'Ἧ' => 'Η',
'Ἠ' => 'Η', 'Ἡ' => 'Η', 'Ὴ' => 'Η', 'Ή' => 'Η', 'Η' => 'Η',
'Ἢ' => 'Η', 'Ἣ' => 'Η', 'Ἤ' => 'Η', 'Ἥ' => 'Η', 'Ἦ' => 'Η',
'Ἧ' => 'Η', 'Ί' => 'Ι', 'Ἰ' => 'Ι', 'Ἱ' => 'Ι', 'Ὶ' => 'Ι',
'Ῐ' => 'Ι', 'Ῑ' => 'Ι', 'Ι' => 'Ι', 'Ϊ' => 'Ι', 'Ι' => 'Ι',
'Ἲ' => 'Ι', 'Ἳ' => 'Ι', 'Ἴ' => 'Ι', 'Ἵ' => 'Ι', 'Ἶ' => 'Ι',
'Ἷ' => 'Ι', 'Ι' => 'Ι', 'Ι' => 'Ι', 'Ό' => 'Ο', 'Ὀ' => 'Ο',
'Ὁ' => 'Ο', 'Ὸ' => 'Ο', 'Ὂ' => 'Ο', 'Ὃ' => 'Ο', 'Ὄ' => 'Ο',
'Ὅ' => 'Ο', 'Ῥ' => 'Ρ', 'Ύ' => 'Υ', 'Υ' => 'Υ', 'Ὑ' => 'Υ',
'Ὺ' => 'Υ', 'Ῠ' => 'Υ', 'Ῡ' => 'Υ', 'Υ' => 'Υ', 'Ϋ' => 'Υ',
'Υ' => 'Υ', 'Υ' => 'Υ', 'Ὓ' => 'Υ', 'Υ' => 'Υ', 'Ὕ' => 'Υ',
'Υ' => 'Υ', 'Ὗ' => 'Υ', 'Υ' => 'Υ', 'Υ' => 'Υ', 'Υ' => 'Υ',
'Ώ' => 'Ω', 'Ὠ' => 'Ω', 'Ὡ' => 'Ω', 'Ὼ' => 'Ω', 'Ω' => 'Ω',
'Ω' => 'Ω', 'Ὢ' => 'Ω', 'Ὣ' => 'Ω', 'Ὤ' => 'Ω', 'Ὥ' => 'Ω',
'Ὦ' => 'Ω', 'Ὧ' => 'Ω', 'Ὠ' => 'Ω', 'Ὡ' => 'Ω', 'Ώ' => 'Ω',
'Ω' => 'Ω', 'Ὢ' => 'Ω', 'Ὣ' => 'Ω', 'Ὤ' => 'Ω', 'Ὥ' => 'Ω',
'Ὦ' => 'Ω', 'Ὧ' => 'Ω',
);

// Individual Greek diacritics.
$substitutions += array(
"\xCC\x80" => '', "\xCC\x81" => '', "\xCC\x84" => '',
"\xCC\x86" => '', "\xCC\x88" => '', "\xCC\x93" => '',
"\xCC\x94" => '', "\xCD\x82" => '', "\xCD\x83" => '',
"\xCD\x84" => '', "\xCD\x85" => '', "\xCD\xBA" => '',
"\xCE\x84" => '', "\xCE\x85" => '',
"\xE1\xBE\xBD" => '', "\xE1\xBE\xBF" => '', "\xE1\xBF\x80" => '',
"\xE1\xBF\x81" => '', "\xE1\xBF\x8D" => '', "\xE1\xBF\x8E" => '',
"\xE1\xBF\x8F" => '', "\xE1\xBF\x9D" => '', "\xE1\xBF\x9E" => '',
"\xE1\xBF\x9F" => '', "\xE1\xBF\xAD" => '', "\xE1\xBF\xAE" => '',
"\xE1\xBF\xAF" => '', "\xE1\xBF\xBD" => '', "\xE1\xBF\xBE" => '',
);
}

// Turkish & Azeri conditional casing, part 2.
if ($case !== 'upper' && in_array($lang, array('tr', 'az')))
{
// Remove unnecessary "COMBINING DOT ABOVE" after i
$substitutions['i' . "\xCC\x87"] = 'i';
}

// Lithuanian conditional casing.
if ($lang === 'lt')
{
// Force a dot above lowercase i and j with accents by inserting
// the "COMBINING DOT ABOVE" character.
// Note: some fonts handle this incorrectly and show two dots,
// but that's a bug in those fonts and cannot be fixed here.
if ($case !== 'upper')
$replacements['/(i\x{328}?|\x{12F}|j)([\x{300}\x{301}\x{303}])/u'] = '$1' . "\xCC\x87" . '$2';

// Remove "COMBINING DOT ABOVE" after uppercase I and J.
if ($case !== 'lower')
$replacements['/(I\x{328}?|\x{12E}|J)\x{307}/u'] = '$1';
}

// Dutch has a special titlecase rule.
if ($lang === 'nl' && $case === 'title')
{
$replacements['/\bIj/u'] = 'IJ';
}

// Now perform whatever conditional casing fixes we need.
if (!empty($substitutions))
$string = strtr($string, $substitutions);

if (!empty($replacements))
$string = preg_replace(array_keys($replacements), $replacements, $string);

return $string;
Find: Select
if (is_callable('normalizer_is_normalized') && normalizer_is_normalized($string, Normalizer::FORM_D))
return $string;
Replace With: Select
if (is_callable('IntlChar::getUnicodeVersion') && version_compare(implode('.', IntlChar::getUnicodeVersion()), SMF_UNICODE_VERSION, '>='))
{
if (is_callable('normalizer_is_normalized') && normalizer_is_normalized($string, Normalizer::FORM_D))
return $string;
Find: Select
if (is_callable('normalizer_normalize'))
return normalizer_normalize($string, Normalizer::FORM_D);
Replace With: Select
if (is_callable('normalizer_normalize'))
return normalizer_normalize($string, Normalizer::FORM_D);
}
Find: Select
if (is_callable('normalizer_is_normalized') && normalizer_is_normalized($string, Normalizer::FORM_KD))
return $string;
Replace With: Select
if (is_callable('IntlChar::getUnicodeVersion') && version_compare(implode('.', IntlChar::getUnicodeVersion()), SMF_UNICODE_VERSION, '>='))
{
if (is_callable('normalizer_is_normalized') && normalizer_is_normalized($string, Normalizer::FORM_KD))
return $string;
Find: Select
if (is_callable('normalizer_normalize'))
return normalizer_normalize($string, Normalizer::FORM_KD);
Replace With: Select
if (is_callable('normalizer_normalize'))
return normalizer_normalize($string, Normalizer::FORM_KD);
}
Find: Select
if (is_callable('normalizer_is_normalized') && normalizer_is_normalized($string, Normalizer::FORM_C))
return $string;
Replace With: Select
if (is_callable('IntlChar::getUnicodeVersion') && version_compare(implode('.', IntlChar::getUnicodeVersion()), SMF_UNICODE_VERSION, '>='))
{
if (is_callable('normalizer_is_normalized') && normalizer_is_normalized($string, Normalizer::FORM_C))
return $string;
Find: Select
if (is_callable('normalizer_normalize'))
return normalizer_normalize($string, Normalizer::FORM_C);
Replace With: Select
if (is_callable('normalizer_normalize'))
return normalizer_normalize($string, Normalizer::FORM_C);
}
Find: Select
if (is_callable('normalizer_is_normalized') && normalizer_is_normalized($string, Normalizer::FORM_KC))
return $string;
Replace With: Select
if (is_callable('IntlChar::getUnicodeVersion') && version_compare(implode('.', IntlChar::getUnicodeVersion()), SMF_UNICODE_VERSION, '>='))
{
if (is_callable('normalizer_is_normalized') && normalizer_is_normalized($string, Normalizer::FORM_KC))
return $string;
Find: Select
if (is_callable('normalizer_normalize'))
return normalizer_normalize($string, Normalizer::FORM_KC);
Replace With: Select
if (is_callable('normalizer_normalize'))
return normalizer_normalize($string, Normalizer::FORM_KC);
}
Find: Select
* @return array Array of decomposed Unicode characters.
Add Before: Select
* @param bool $compatibility If true, perform compatibility decomposition. Default false.
Find: Select
if ($chars[$i] >= "\xEA\xB0\x80" && $chars[$i] <= "\xED\x9E\xA3")
Add Before: Select
// See "Hangul Syllable Decomposition" in the Unicode standard, ch. 3.12.
Find: Select
$l = 0x1100 + $sindex / (21 * 28);
$v = 0x1161 + ($sindex % (21 * 28)) / 28;
Replace With: Select
$l = (int) (0x1100 + $sindex / (21 * 28));
$v = (int) (0x1161 + ($sindex % (21 * 28)) / 28);
Find: Select
if ($chars[$c] >= "\xE1\x84\x80" && $chars[$c] <= "\xE1\x84\x92" && $chars[$c + 1] >= "\xE1\x85\xA1" && $chars[$c + 1] <= "\xE1\x85\xB5")
Replace With: Select
if ($chars[$c] >= "\xE1\x84\x80" && $chars[$c] <= "\xE1\x84\x92" && isset($chars[$c + 1]) && $chars[$c + 1] >= "\xE1\x85\xA1" && $chars[$c + 1] <= "\xE1\x85\xB5")
Find: Select
$pattern = $letter . $nonspacing_marks . '[' . $classes['viramas'] . ']' . $nonspacing_combining_marks . '\K' . (!empty($zwj_pattern) ? '(?:' . $zwj_pattern . '|' . $zwnj_pattern . ')' : $zwnj_pattern);
Replace With: Select
$pattern = $letter . $nonspacing_marks . '[' . $classes['Virama'] . ']' . $nonspacing_combining_marks . '\K' . (!empty($zwj_pattern) ? '(?:' . $zwj_pattern . '|' . $zwnj_pattern . ')' : $zwnj_pattern);

./Sources/Subs-Compat.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
'IDNA_ALLOW_UNASSIGNED' => 0,
Replace With: Select
'IDNA_ALLOW_UNASSIGNED' => 1,
Find: Select
* This is not a complete polyfill. The $flags, $variant, and $idna_info
* parameters are included for compatibility with the standard PHP
* function, but only the default values are supported.
*
* @param string $domain The domain to convert, which must be UTF-8 encoded.
* @param int $flags Ignored in this compatibility function.
* @param int $variant Ignored in this compatibility function.
Replace With: Select
* This is not a complete polyfill:
*
* - $flags only supports IDNA_DEFAULT, IDNA_NONTRANSITIONAL_TO_ASCII,
* and IDNA_USE_STD3_RULES.
* - $variant is ignored, because INTL_IDNA_VARIANT_UTS46 is always used.
* - $idna_info is ignored.
*
* @param string $domain The domain to convert, which must be UTF-8 encoded.
* @param int $flags A subset of possible IDNA_* flags.
* @param int $variant Ignored in this compatibility function.
Find: Select
function idn_to_ascii($domain, $flags = 0, $variant = 1, &$idna_info = null)
{
global $sourcedir;

require_once($sourcedir . '/Subs-Charset.php');
require_once($sourcedir . '/Class-Punycode.php');
$Punycode = new Punycode();

Replace With: Select
function idn_to_ascii($domain, $flags = 0, $variant = 1, &$idna_info = null)
{
global $sourcedir;

static $Punycode;

require_once($sourcedir . '/Class-Punycode.php');

Find: Select
return $Punycode->encode(sanitize_iri(utf8_normalize_kc_casefold($domain)));
Replace With: Select
if (!is_object($Punycode))
$Punycode = new Punycode();

if (method_exists($Punycode, 'useStd3'))
$Punycode->useStd3($flags === ($flags | IDNA_USE_STD3_RULES));
if (method_exists($Punycode, 'useNonTransitional'))
$Punycode->useNonTransitional($flags === ($flags | IDNA_NONTRANSITIONAL_TO_ASCII));

return $Punycode->encode($domain);
Find: Select
* This is not a complete polyfill. The $flags, $variant, and $idna_info
* parameters are included for compatibility with the standard PHP
* function, but only the default values are supported.
Replace With: Select
* This is not a complete polyfill:
*
* - $flags only supports IDNA_DEFAULT, IDNA_NONTRANSITIONAL_TO_UNICODE,
* and IDNA_USE_STD3_RULES.
* - $variant is ignored, because INTL_IDNA_VARIANT_UTS46 is always used.
* - $idna_info is ignored.
Find: Select
function idn_to_utf8($domain, $flags = 0, $variant = 1, &$idna_info = null)
{
global $sourcedir;

require_once($sourcedir . '/Subs-Charset.php');
require_once($sourcedir . '/Class-Punycode.php');
$Punycode = new Punycode();

Replace With: Select
function idn_to_utf8($domain, $flags = 0, $variant = 1, &$idna_info = null)
{
global $sourcedir;

static $Punycode;

require_once($sourcedir . '/Class-Punycode.php');

Find: Select
return $Punycode->decode(sanitize_iri(utf8_normalize_kc_casefold($domain)));
Replace With: Select
if (!is_object($Punycode))
$Punycode = new Punycode();

$Punycode->useStd3($flags === ($flags | IDNA_USE_STD3_RULES));
$Punycode->useNonTransitional($flags === ($flags | IDNA_NONTRANSITIONAL_TO_UNICODE));

return $Punycode->decode($domain);

./Sources/Subs-Db-mysql.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
mysqli_query($connection, 'SET SESSION sql_mode = \'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT\'');
Replace With: Select
mysqli_query($connection, 'SET SESSION sql_mode = \'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT\'');

./Sources/Subs-Db-postgresql.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
global $db_connection;

// Decide which connection to use
Replace With: Select
global $db_connection, $inTransaction;

// Decide which connection to use
Find: Select
return @pg_query($connection, 'BEGIN');
elseif ($type == 'rollback')
return @pg_query($connection, 'ROLLBACK');
elseif ($type == 'commit')
return @pg_query($connection, 'COMMIT');

Replace With: Select
{
$inTransaction = true;
return @pg_query($connection, 'BEGIN');
}
elseif ($type == 'rollback')
{
$inTransaction = false;
return @pg_query($connection, 'ROLLBACK');
}
elseif ($type == 'commit')
{
$inTransaction = false;
return @pg_query($connection, 'COMMIT');
}

Find: Select
global $db_prefix, $db_connection, $db_persist;
Replace With: Select
global $db_prefix, $db_connection, $db_persist, $smcFunc, $inTransaction;
Find: Select
if(empty($db_persist))
Add Before: Select
// If we are in a transaction, abort.
if (!empty($inTransaction))
smf_db_transaction('rollback');

./Sources/Subs-Editor.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
// ... nor this!
if ($thisVerification['number_questions'] && (!isset($_SESSION[$verificationOptions['id'] . '_vv']['q']) || !isset($_REQUEST[$verificationOptions['id'] . '_vv']['q'])))
fatal_lang_error('no_access', false);
// Hmm, it's requested but not actually declared. This shouldn't happen.
Replace With: Select
// Verification question does not exist for this language.
if ($thisVerification['number_questions'] && (!isset($_SESSION[$verificationOptions['id'] . '_vv']['q']) || !isset($_REQUEST[$verificationOptions['id'] . '_vv']['q'])))
fatal_lang_error('registration_no_verification_questions');
// Hmm, it's requested but not actually declared. This shouldn't happen.

./Sources/Subs-Notify.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
$update_rows[] = array($memID, $k, $v);
Replace With: Select
$update_rows[] = array($memID, $k, min(max((int) $v, -128), 127));

./Sources/Subs-Package.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
$base_files = array('index.php', 'SSI.php', 'agreement.txt', 'cron.php', 'ssi_examples.php', 'ssi_examples.shtml', 'subscriptions.php');
Replace With: Select
$base_files = array('index.php', 'SSI.php', 'agreement.txt', 'cron.php', 'proxy.php', 'ssi_examples.php', 'ssi_examples.shtml', 'subscriptions.php');
Find: Select
if (preg_match('~^(\.{1,2}|CVS|backup.*|help|images|.*\~)$~', $entry) != 0)
Replace With: Select
if (preg_match('~^(\.{1,2}|CVS|backup.*|help|images|.*\~|.*minified_[a-z0-9]{32}\.(js|css))$~', $entry) != 0)

./Sources/Subs-Post.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
$line_break = $context['server']['is_windows'] || !$use_sendmail ? "\r\n" : "\n";
Replace With: Select
// Starting with php 8x, line breaks need to be \r\n even for linux.
$line_break = ($context['server']['is_windows'] || !$use_sendmail || version_compare(PHP_VERSION, '8.0.0', '>=')) ? "\r\n" : "\n";
Find: Select
if ($msgOptions['send_notifications'] && !empty($msgOptions['approved']) && (!empty($msgOptions['quoted_members']) || !empty($msgOptions['mentioned_members'])))
Replace With: Select
if ($msgOptions['send_notifications'] && !empty($msgOptions['approved']) && (!empty($msgOptions['quoted_members']) || !empty($msgOptions['mentioned_members']) || !empty($mention_modifications['removed']) || !empty($quoted_modifications['removed'])))
Find: Select
}
// If unapproving add to the approval queue!
Add Before: Select

// Clean up moderator alerts
if (!empty($notification_topics))
clearApprovalAlerts(array_column($notification_topics, 'topic'), 'unapproved_topic');
if (!empty($notification_posts))
clearApprovalAlerts(array_column($notification_posts, 'id'), 'unapproved_post');
Find: Select
/**
* Takes an array of board IDs and updates their last messages.
Add Before: Select
/**
* Upon approval, clear unread alerts.
*
* @param int[] $content_ids either id_msgs or id_topics
* @param string $content_action will be either 'unapproved_post' or 'unapproved_topic'
* @return void
*/
function clearApprovalAlerts($content_ids, $content_action)
{
global $smcFunc;

// Some data hygiene...
if (!is_array($content_ids))
return;
$content_ids = array_filter(array_map('intval', $content_ids));
if (empty($content_ids))
return;

if (!in_array($content_action, array('unapproved_post', 'unapproved_topic')))
return;

// Check to see if there are unread alerts to delete...
// Might be multiple alerts, for multiple moderators...
$alerts = array();
$moderators = array();
$result = $smcFunc['db_query']('', '
SELECT id_alert, id_member FROM {db_prefix}user_alerts
WHERE content_id IN ({array_int:content_ids})
AND content_type = {string:content_type}
AND content_action = {string:content_action}
AND is_read = {int:unread}',
array(
'content_ids' => $content_ids,
'content_type' => $content_action === 'unapproved_topic' ? 'topic' : 'msg',
'content_action' => $content_action,
'unread' => 0,
)
);
// Found any?
while ($row = $smcFunc['db_fetch_assoc']($result))
{
$alerts[] = $row['id_alert'];
$moderators[] = $row['id_member'];
}
if (!empty($alerts))
{
// Delete 'em
$smcFunc['db_query']('', '
DELETE FROM {db_prefix}user_alerts
WHERE id_alert IN ({array_int:alerts})',
array(
'alerts' => $alerts,
)
);
// Decrement counter for each moderator who received an alert
updateMemberData($moderators, array('alerts' => '-'));
}
}

./Sources/Subs-ReportedContent.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
// Log this action.
Add Before: Select
// See if any report alerts need to be cleaned up upon close/ignore
if (in_array($log_report, array('close', 'ignore', 'close_user', 'ignore_user')))
clearReportAlerts($log_report, $extra);

Find: Select
/**
* Counts how many reports are in total. Used for creating pagination.
Add Before: Select
/**
* Upon close/ignore, mark unread alerts as read.
*
* @param string $log_report - what action is being taken
* @param mixed[] $extra - detailed info about the report
* @return void
*/
function clearReportAlerts($log_report, $extra)
{
global $smcFunc;

// Setup the query, depending on if it's a member report or a msg report.
// In theory, these should be unique (reports for the same things get combined), but since $extra is an array, treat as an array.
if (strpos($log_report, '_user') !== false)
{
$content_ids = array_unique(array_column($extra, 'member'));
$content_type = 'member';
}
else
{
$content_ids = array_unique(array_column($extra, 'message'));
$content_type = 'msg';
}

// Check to see if there are unread alerts to flag as read...
// Might be multiple alerts, for multiple moderators...
$alerts = array();
$moderators = array();
$result = $smcFunc['db_query']('', '
SELECT id_alert, id_member FROM {db_prefix}user_alerts
WHERE content_id IN ({array_int:content_ids})
AND content_type = {string:content_type}
AND content_action = {string:content_action}
AND is_read = {int:unread}',
array(
'content_ids' => $content_ids,
'content_type' => $content_type,
'content_action' => 'report',
'unread' => 0,
)
);
// Found any?
while ($row = $smcFunc['db_fetch_assoc']($result))
{
$alerts[] = $row['id_alert'];
$moderators[] = $row['id_member'];
}
if (!empty($alerts))
{
// Flag 'em as read
$smcFunc['db_query']('', '
UPDATE {db_prefix}user_alerts
SET is_read = {int:time}
WHERE id_alert IN ({array_int:alerts})',
array(
'time' => time(),
'alerts' => $alerts,
)
);
// Decrement counter for each moderator who had an unread alert
updateMemberData($moderators, array('alerts' => '-'));
}
}

./Sources/Subs-Timezones.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
if (!empty($alt_tzid))
Replace With: Select
if (!empty($alt_tzid) && empty($tzid_metazones[$alt_tzid]))
Find: Select
'Europe/Kiev',
Replace With: Select
'Europe/Kyiv',
Find: Select
$country_tzids[$country_code] = array_values(get_tzid_fallbacks($country_tzids[$country_code], $when));
Replace With: Select
$country_tzids[$country_code] = array_unique(array_values(get_tzid_fallbacks($country_tzids[$country_code], $when)));
Find: Select

// 2. Newly created time zones.
Add Before: Select
'Europe/Busingen' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => 'Europe/Zurich',
),
),
'Europe/Kyiv' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => 'Europe/Kiev',
),
),
Find: Select
// The same as Tasmania, except it stayed on DST all year in 2010.
Add Before: Select
// The initial entry in many of the following zones is set to '' because
// the records go back to eras before the adoption of standardized time
// zones, which means no substitutes are possible then.

Find: Select
// This place uses two hours for DST. No substitutes are possible.
Add Before: Select
// Added in version 2013a.
'Asia/Khandyga' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1919-12-14T14:57:47+0000'),
'tzid' => 'Etc/GMT-8',
),
array(
'ts' => strtotime('1930-06-20T16:00:00+0000'),
'tzid' => 'Asia/Yakutsk',
),
array(
'ts' => strtotime('2003-12-31T15:00:00+0000'),
'tzid' => 'Asia/Vladivostok',
),
array(
'ts' => strtotime('2011-09-12T13:00:00+0000'),
'tzid' => 'Asia/Yakutsk',
),
),

// Added in version 2013a.
'Asia/Ust-Nera' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1919-12-14T14:27:06+0000'),
'tzid' => 'Etc/GMT-8',
),
array(
'ts' => strtotime('1930-06-20T16:00:00+0000'),
'tzid' => 'Asia/Yakutsk',
),
array(
'ts' => strtotime('1981-03-31T15:00:00+0000'),
'tzid' => 'Asia/Magadan',
),
array(
'ts' => strtotime('2011-09-12T12:00:00+0000'),
'tzid' => 'Asia/Vladivostok',
),
),

// Created in version 2014b.
Find: Select
// Diverged from Pacific/Port_Moresby in version 2014i.
'Pacific/Bougainville' => array(
// Before the divergence, we don't actually need this one at all.
array(
Replace With: Select
// Diverged from Asia/Yakustsk in version 2014f.
'Asia/Chita' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1919-12-14T16:26:08+0000'),
'tzid' => 'Asia/Yakutsk',
),
array(
'ts' => strtotime('2014-10-25T16:00:00+0000'),
'tzid' => 'Etc/GMT-8',
),
array(
'ts' => strtotime('2016-03-26T18:00:00+0000'),
'tzid' => 'Asia/Yakutsk',
),
),

// Diverged from Asia/Magadan in version 2014f.
'Asia/Srednekolymsk' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1924-05-01T13:45:08+0000'),
'tzid' => 'Etc/GMT-10',
),
array(
'ts' => strtotime('1930-06-20T14:00:00+0000'),
'tzid' => 'Asia/Magadan',
),
array(
'ts' => strtotime('2014-10-25T14:00:00+0000'),
'tzid' => 'Etc/GMT-11',
),
),

// Diverged from Pacific/Port_Moresby in version 2014i.
'Pacific/Bougainville' => array(
array(
Find: Select
// For dates after divergence, it is the same as Pacific/Kosrae.
Add Before: Select
// Pacific/Yap is an unused link to Pacific/Port_Moresby.
array(
'ts' => strtotime('1879-12-31T14:11:20+0000'),
'tzid' => 'Pacific/Yap',
),
// Apparently this was different for a while in World War II.
array(
'ts' => strtotime('1942-06-30T14:00:00+0000'),
'tzid' => 'Singapore',
),
array(
'ts' => strtotime('1945-08-20T15:00:00+0000'),
'tzid' => 'Pacific/Yap',
),
Find: Select
// Diverged from America/Santiago in version 2017a.
'America/Punta_Arenas' => array(
// Before the divergence, we don't actually need this one at all.
array(
Replace With: Select
// Added in version 2015g.
'America/Fort_Nelson' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1884-01-01T08:12:28+0000'),
'tzid' => 'Canada/Pacific',
),
array(
'ts' => strtotime('1946-01-01T08:00:00+0000'),
'tzid' => 'Etc/GMT+8',
),
array(
'ts' => strtotime('1947-01-01T08:00:00+0000'),
'tzid' => 'Canada/Pacific',
),
array(
'ts' => strtotime('2015-03-08T10:00:00+0000'),
'tzid' => 'MST',
),
),

// Created in version 2016b.
'Europe/Astrakhan' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1935-01-26T20:00:00+0000'),
'tzid' => 'Europe/Samara',
),
array(
'ts' => strtotime('1989-03-25T22:00:00+0000'),
'tzid' => 'Europe/Volgograd',
),
array(
'ts' => strtotime('2016-03-26T23:00:00+0000'),
'tzid' => 'Europe/Samara',
),
),

// Created in version 2016b.
'Europe/Ulyanovsk' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1935-01-26T20:00:00+0000'),
'tzid' => 'Europe/Samara',
),
array(
'ts' => strtotime('1989-03-25T22:00:00+0000'),
'tzid' => 'W-SU',
),
array(
'ts' => strtotime('2016-03-26T23:00:00+0000'),
'tzid' => 'Europe/Samara',
),
),

// Created in version 2016b.
'Asia/Barnaul' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1919-12-09T18:25:00+0000'),
'tzid' => 'Etc/GMT-6',
),
array(
'ts' => strtotime('1930-06-20T18:00:00+0000'),
'tzid' => 'Asia/Novokuznetsk',
),
array(
'ts' => strtotime('1995-05-27T17:00:00+0000'),
'tzid' => 'Asia/Novosibirsk',
),
array(
'ts' => strtotime('2016-03-26T20:00:00+0000'),
'tzid' => 'Asia/Novokuznetsk',
),
),

// Created in version 2016b.
'Asia/Tomsk' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1919-12-21T18:20:09+0000'),
'tzid' => 'Asia/Novosibirsk',
),
array(
'ts' => strtotime('1930-06-20T18:00:00+0000'),
'tzid' => 'Asia/Novokuznetsk',
),
array(
'ts' => strtotime('2002-04-30T20:00:00+0000'),
'tzid' => 'Asia/Novosibirsk',
),
array(
'ts' => strtotime('2016-05-28T20:00:00+0000'),
'tzid' => 'Asia/Novokuznetsk',
),
),

// Created in version 2016d.
'Europe/Kirov' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1935-01-26T20:00:00+0000'),
'tzid' => 'Europe/Samara',
),
array(
'ts' => strtotime('1989-03-25T22:00:00+0000'),
'tzid' => 'Europe/Volgograd',
),
array(
'ts' => strtotime('1992-03-28T22:00:00+0000'),
'tzid' => 'W-SU',
),
),

// Diverged from Asia/Nicosia in version 2016i.
'Asia/Famagusta' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
// Europe/Nicosia is an otherwise unused link to Asia/Nicosia.
array(
'ts' => strtotime('1921-11-13T21:46:32+0000'),
'tzid' => 'Europe/Nicosia',
),
// Became same as Europe/Istanbul.
// Turkey is an otherwise unused link to Europe/Istanbul.
array(
'ts' => strtotime('2016-09-07T21:00:00+0000'),
'tzid' => 'Turkey',
),
// Became same as Asia/Nicosia again.
array(
'ts' => strtotime('2017-10-29T01:00:00+0000'),
'tzid' => 'Europe/Nicosia',
),
),

// Created in version 2016j.
'Asia/Atyrau' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1924-05-01T20:32:16+0000'),
'tzid' => 'Etc/GMT-3',
),
array(
'ts' => strtotime('1930-06-20T21:00:00+0000'),
'tzid' => 'Asia/Aqtau',
),
array(
'ts' => strtotime('1981-09-30T19:00:00+0000'),
'tzid' => 'Asia/Aqtobe',
),
array(
'tz' => strtotime('1999-03-27T21:00:00+0000'),
'tzid' => 'Etc/GMT-5'
),
),

// Diverged from Europe/Volgograd in version 2016j.
'Europe/Saratov' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1935-01-26T20:00:00+0000'),
'tzid' => 'Europe/Samara',
),
array(
'ts' => strtotime('1988-03-26T22:00:00+0000'),
'tzid' => 'Europe/Volgograd',
),
array(
'ts' => strtotime('2016-12-03T23:00:00+0000'),
'tzid' => 'Europe/Samara',
),
),

// Diverged from America/Santiago in version 2017a.
'America/Punta_Arenas' => array(
array(
Find: Select
// For dates after divergence, it is the same as Antarctica/Palmer.
// If this ever ceases to be true, add another entry.
Replace With: Select
// Chile/Continental is an otherwise unused link to America/Santiago.
array(
'ts' => strtotime('1890-01-01T04:43:40+0000'),
'tzid' => 'Chile/Continental',
),
Find: Select
'ts' => strtotime('2017-05-14T03:00:00+0000'),
'tzid' => 'Antarctica/Palmer',
Replace With: Select
'ts' => strtotime('1942-08-01T05:00:00+0000'),
'tzid' => 'Etc/GMT+4',
),
array(
'ts' => strtotime('1946-08-29T04:00:00+0000'),
'tzid' => 'Chile/Continental',
),
// America/Mendoza is an otherwise unused link to America/Argentina/Mendoza.
array(
'ts' => strtotime('2016-12-04T03:00:00+0000'),
'tzid' => 'America/Mendoza',
),
),

// Diverged from Asia/Qyzylorda in version 2018h.
'Asia/Qostanay' => array(
array(
'ts' => PHP_INT_MIN,
'tzid' => '',
),
array(
'ts' => strtotime('1924-05-01T19:45:32+0000'),
'tzid' => 'Asia/Qyzylorda',
),
array(
'ts' => strtotime('1930-06-20T20:00:00+0000'),
'tzid' => 'Asia/Aqtobe',
),
array(
'ts' => strtotime('2004-10-30T21:00:00+0000'),
'tzid' => 'Asia/Almaty',
Find: Select
if (empty($replacements[$tzid]))
Add Before: Select
// Replacement is already in use.
if (in_array($alt['tzid'], $replacements) || (in_array($alt['tzid'], $tzids) && strpos($alt['tzid'], 'Etc/') === false))
$replacements[$tzid] = '';

./Sources/Subs.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
$start = max(0, $start);
$start = min($start - ($start % $num_per_page), $max_value);
Replace With: Select
$start = min(max(0, $start), $max_value);
$start = $start - ($start % $num_per_page);
Find: Select
if (function_exists('mb_strtoupper'))
{
$smcFunc['strtoupper'] = 'mb_strtoupper';
$smcFunc['strtolower'] = 'mb_strtolower';
}
elseif (isset($sourcedir))
Replace With: Select
if (isset($sourcedir))
Find: Select
$smcFunc['strtolower'] = 'utf8_strtolower';
}
Add After: Select
elseif (function_exists('mb_strtoupper'))
{
$smcFunc['strtoupper'] = 'mb_strtoupper';
$smcFunc['strtolower'] = 'mb_strtolower';
}
Find: Select
if (!empty($parse_tags))
Replace With: Select
if (!empty($parse_tags) && $message === false)
Find: Select
$data[0] = normalize_iri($data[0]);
Replace With: Select
$data[0] = normalize_iri(strtr(trim($data[0]), array('<br>' => '', ' ' => '%20')));
Find: Select
$data = normalize_iri(strtr($data, array('<br>' => '')));

$scheme = parse_iri($data, PHP_URL_SCHEME);
if (empty($scheme))
$data = 'ftp://' . ltrim($data, ':/');
Replace With: Select
$data = normalize_iri(strtr(trim($data), array('<br>' => '', ' ' => '%20')));

$scheme = parse_iri($data, PHP_URL_SCHEME);
if (empty($scheme))
$data = 'ftp://' . ltrim($data, ':/');
Find: Select
$data = iri_to_url($data);

$scheme = parse_iri($data, PHP_URL_SCHEME);
if (empty($scheme))
$data = 'ftp://' . ltrim($data, ':/');
Replace With: Select
$data = iri_to_url(strtr(trim($data), array('<br>' => '', ' ' => '%20')));

$scheme = parse_iri($data, PHP_URL_SCHEME);
if (empty($scheme))
$data = 'ftp://' . ltrim($data, ':/');
Find: Select
$url = iri_to_url(strtr($data, array('<br>' => '')));
Replace With: Select
$url = iri_to_url(strtr(trim($data), array('<br>' => '', ' ' => '%20')));
Find: Select
'content' => '<a href="$1" class="bbc_link">$1</a>',
'validate' => function(&$tag, &$data, $disabled)
{
$data = normalize_iri(strtr($data, array('<br>' => '')));
Replace With: Select
'content' => '<a href="$1" class="bbc_link">$1</a>',
'validate' => function(&$tag, &$data, $disabled)
{
$data = normalize_iri(strtr(trim($data), array('<br>' => '', ' ' => '%20')));
Find: Select
$data = iri_to_url($data);
Replace With: Select
$data = iri_to_url(strtr(trim($data), array('<br>' => '', ' ' => '%20')));
Find: Select
'tag' => 'url',
'type' => 'unparsed_content',
'content' => '<a href="$1" class="bbc_link" target="_blank" rel="noopener">$1</a>',
'validate' => function(&$tag, &$data, $disabled)
{
$data = normalize_iri(strtr($data, array('<br>' => '')));
Replace With: Select
'tag' => 'url',
'type' => 'unparsed_content',
'content' => '<a href="$1" class="bbc_link" target="_blank" rel="noopener">$1</a>',
'validate' => function(&$tag, &$data, $disabled)
{
$data = normalize_iri(strtr(trim($data), array('<br>' => '', ' ' => '%20')));
Find: Select
$data = iri_to_url($data);

$scheme = parse_iri($data, PHP_URL_SCHEME);
if (empty($scheme))
$data = '//' . ltrim($data, ':/');
Replace With: Select
$data = iri_to_url(strtr(trim($data), array('<br>' => '', ' ' => '%20')));

$scheme = parse_iri($data, PHP_URL_SCHEME);
if (empty($scheme))
$data = '//' . ltrim($data, ':/');
Find: Select
'html',
Add After: Select
'attach',
'ftp',
'flash',
'member',
'code',
'php',
'nobbc',
Find: Select
} // if ip 22.12.* -> 22.12.* - 22.12.*
Replace With: Select
} // if ip 22.12.* -> 22.12.*-22.12.*

./Sources/Unicode/CaseFold.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
if (!defined('SMF'))
die('No direct access...');

Replace With: Select
if (!defined('SMF'))
die('No direct access...');

/**
* Helper function for utf8_casefold.
*
* Developers: Do not update the data in this function manually. Instead,
* run "php -f other/update_unicode_data.php" on the command line.
*
* @return array Casefolding maps.
*/
function utf8_casefold_simple_maps()
{
return array(
"\x41" => "\x61",
"\x42" => "\x62",
"\x43" => "\x63",
"\x44" => "\x64",
"\x45" => "\x65",
"\x46" => "\x66",
"\x47" => "\x67",
"\x48" => "\x68",
"\x49" => "\x69",
"\x4A" => "\x6A",
"\x4B" => "\x6B",
"\x4C" => "\x6C",
"\x4D" => "\x6D",
"\x4E" => "\x6E",
"\x4F" => "\x6F",
"\x50" => "\x70",
"\x51" => "\x71",
"\x52" => "\x72",
"\x53" => "\x73",
"\x54" => "\x74",
"\x55" => "\x75",
"\x56" => "\x76",
"\x57" => "\x77",
"\x58" => "\x78",
"\x59" => "\x79",
"\x5A" => "\x7A",
"\xC2\xB5" => "\xCE\xBC",
"\xC3\x80" => "\xC3\xA0",
"\xC3\x81" => "\xC3\xA1",
"\xC3\x82" => "\xC3\xA2",
"\xC3\x83" => "\xC3\xA3",
"\xC3\x84" => "\xC3\xA4",
"\xC3\x85" => "\xC3\xA5",
"\xC3\x86" => "\xC3\xA6",
"\xC3\x87" => "\xC3\xA7",
"\xC3\x88" => "\xC3\xA8",
"\xC3\x89" => "\xC3\xA9",
"\xC3\x8A" => "\xC3\xAA",
"\xC3\x8B" => "\xC3\xAB",
"\xC3\x8C" => "\xC3\xAC",
"\xC3\x8D" => "\xC3\xAD",
"\xC3\x8E" => "\xC3\xAE",
"\xC3\x8F" => "\xC3\xAF",
"\xC3\x90" => "\xC3\xB0",
"\xC3\x91" => "\xC3\xB1",
"\xC3\x92" => "\xC3\xB2",
"\xC3\x93" => "\xC3\xB3",
"\xC3\x94" => "\xC3\xB4",
"\xC3\x95" => "\xC3\xB5",
"\xC3\x96" => "\xC3\xB6",
"\xC3\x98" => "\xC3\xB8",
"\xC3\x99" => "\xC3\xB9",
"\xC3\x9A" => "\xC3\xBA",
"\xC3\x9B" => "\xC3\xBB",
"\xC3\x9C" => "\xC3\xBC",
"\xC3\x9D" => "\xC3\xBD",
"\xC3\x9E" => "\xC3\xBE",
"\xC4\x80" => "\xC4\x81",
"\xC4\x82" => "\xC4\x83",
"\xC4\x84" => "\xC4\x85",
"\xC4\x86" => "\xC4\x87",
"\xC4\x88" => "\xC4\x89",
"\xC4\x8A" => "\xC4\x8B",
"\xC4\x8C" => "\xC4\x8D",
"\xC4\x8E" => "\xC4\x8F",
"\xC4\x90" => "\xC4\x91",
"\xC4\x92" => "\xC4\x93",
"\xC4\x94" => "\xC4\x95",
"\xC4\x96" => "\xC4\x97",
"\xC4\x98" => "\xC4\x99",
"\xC4\x9A" => "\xC4\x9B",
"\xC4\x9C" => "\xC4\x9D",
"\xC4\x9E" => "\xC4\x9F",
"\xC4\xA0" => "\xC4\xA1",
"\xC4\xA2" => "\xC4\xA3",
"\xC4\xA4" => "\xC4\xA5",
"\xC4\xA6" => "\xC4\xA7",
"\xC4\xA8" => "\xC4\xA9",
"\xC4\xAA" => "\xC4\xAB",
"\xC4\xAC" => "\xC4\xAD",
"\xC4\xAE" => "\xC4\xAF",
"\xC4\xB2" => "\xC4\xB3",
"\xC4\xB4" => "\xC4\xB5",
"\xC4\xB6" => "\xC4\xB7",
"\xC4\xB9" => "\xC4\xBA",
"\xC4\xBB" => "\xC4\xBC",
"\xC4\xBD" => "\xC4\xBE",
"\xC4\xBF" => "\xC5\x80",
"\xC5\x81" => "\xC5\x82",
"\xC5\x83" => "\xC5\x84",
"\xC5\x85" => "\xC5\x86",
"\xC5\x87" => "\xC5\x88",
"\xC5\x8A" => "\xC5\x8B",
"\xC5\x8C" => "\xC5\x8D",
"\xC5\x8E" => "\xC5\x8F",
"\xC5\x90" => "\xC5\x91",
"\xC5\x92" => "\xC5\x93",
"\xC5\x94" => "\xC5\x95",
"\xC5\x96" => "\xC5\x97",
"\xC5\x98" => "\xC5\x99",
"\xC5\x9A" => "\xC5\x9B",
"\xC5\x9C" => "\xC5\x9D",
"\xC5\x9E" => "\xC5\x9F",
"\xC5\xA0" => "\xC5\xA1",
"\xC5\xA2" => "\xC5\xA3",
"\xC5\xA4" => "\xC5\xA5",
"\xC5\xA6" => "\xC5\xA7",
"\xC5\xA8" => "\xC5\xA9",
"\xC5\xAA" => "\xC5\xAB",
"\xC5\xAC" => "\xC5\xAD",
"\xC5\xAE" => "\xC5\xAF",
"\xC5\xB0" => "\xC5\xB1",
"\xC5\xB2" => "\xC5\xB3",
"\xC5\xB4" => "\xC5\xB5",
"\xC5\xB6" => "\xC5\xB7",
"\xC5\xB8" => "\xC3\xBF",
"\xC5\xB9" => "\xC5\xBA",
"\xC5\xBB" => "\xC5\xBC",
"\xC5\xBD" => "\xC5\xBE",
"\xC5\xBF" => "\x73",
"\xC6\x81" => "\xC9\x93",
"\xC6\x82" => "\xC6\x83",
"\xC6\x84" => "\xC6\x85",
"\xC6\x86" => "\xC9\x94",
"\xC6\x87" => "\xC6\x88",
"\xC6\x89" => "\xC9\x96",
"\xC6\x8A" => "\xC9\x97",
"\xC6\x8B" => "\xC6\x8C",
"\xC6\x8E" => "\xC7\x9D",
"\xC6\x8F" => "\xC9\x99",
"\xC6\x90" => "\xC9\x9B",
"\xC6\x91" => "\xC6\x92",
"\xC6\x93" => "\xC9\xA0",
"\xC6\x94" => "\xC9\xA3",
"\xC6\x96" => "\xC9\xA9",
"\xC6\x97" => "\xC9\xA8",
"\xC6\x98" => "\xC6\x99",
"\xC6\x9C" => "\xC9\xAF",
"\xC6\x9D" => "\xC9\xB2",
"\xC6\x9F" => "\xC9\xB5",
"\xC6\xA0" => "\xC6\xA1",
"\xC6\xA2" => "\xC6\xA3",
"\xC6\xA4" => "\xC6\xA5",
"\xC6\xA6" => "\xCA\x80",
"\xC6\xA7" => "\xC6\xA8",
"\xC6\xA9" => "\xCA\x83",
"\xC6\xAC" => "\xC6\xAD",
"\xC6\xAE" => "\xCA\x88",
"\xC6\xAF" => "\xC6\xB0",
"\xC6\xB1" => "\xCA\x8A",
"\xC6\xB2" => "\xCA\x8B",
"\xC6\xB3" => "\xC6\xB4",
"\xC6\xB5" => "\xC6\xB6",
"\xC6\xB7" => "\xCA\x92",
"\xC6\xB8" => "\xC6\xB9",
"\xC6\xBC" => "\xC6\xBD",
"\xC7\x84" => "\xC7\x86",
"\xC7\x85" => "\xC7\x86",
"\xC7\x87" => "\xC7\x89",
"\xC7\x88" => "\xC7\x89",
"\xC7\x8A" => "\xC7\x8C",
"\xC7\x8B" => "\xC7\x8C",
"\xC7\x8D" => "\xC7\x8E",
"\xC7\x8F" => "\xC7\x90",
"\xC7\x91" => "\xC7\x92",
"\xC7\x93" => "\xC7\x94",
"\xC7\x95" => "\xC7\x96",
"\xC7\x97" => "\xC7\x98",
"\xC7\x99" => "\xC7\x9A",
"\xC7\x9B" => "\xC7\x9C",
"\xC7\x9E" => "\xC7\x9F",
"\xC7\xA0" => "\xC7\xA1",
"\xC7\xA2" => "\xC7\xA3",
"\xC7\xA4" => "\xC7\xA5",
"\xC7\xA6" => "\xC7\xA7",
"\xC7\xA8" => "\xC7\xA9",
"\xC7\xAA" => "\xC7\xAB",
"\xC7\xAC" => "\xC7\xAD",
"\xC7\xAE" => "\xC7\xAF",
"\xC7\xB1" => "\xC7\xB3",
"\xC7\xB2" => "\xC7\xB3",
"\xC7\xB4" => "\xC7\xB5",
"\xC7\xB6" => "\xC6\x95",
"\xC7\xB7" => "\xC6\xBF",
"\xC7\xB8" => "\xC7\xB9",
"\xC7\xBA" => "\xC7\xBB",
"\xC7\xBC" => "\xC7\xBD",
"\xC7\xBE" => "\xC7\xBF",
"\xC8\x80" => "\xC8\x81",
"\xC8\x82" => "\xC8\x83",
"\xC8\x84" => "\xC8\x85",
"\xC8\x86" => "\xC8\x87",
"\xC8\x88" => "\xC8\x89",
"\xC8\x8A" => "\xC8\x8B",
"\xC8\x8C" => "\xC8\x8D",
"\xC8\x8E" => "\xC8\x8F",
"\xC8\x90" => "\xC8\x91",
"\xC8\x92" => "\xC8\x93",
"\xC8\x94" => "\xC8\x95",
"\xC8\x96" => "\xC8\x97",
"\xC8\x98" => "\xC8\x99",
"\xC8\x9A" => "\xC8\x9B",
"\xC8\x9C" => "\xC8\x9D",
"\xC8\x9E" => "\xC8\x9F",
"\xC8\xA0" => "\xC6\x9E",
"\xC8\xA2" => "\xC8\xA3",
"\xC8\xA4" => "\xC8\xA5",
"\xC8\xA6" => "\xC8\xA7",
"\xC8\xA8" => "\xC8\xA9",
"\xC8\xAA" => "\xC8\xAB",
"\xC8\xAC" => "\xC8\xAD",
"\xC8\xAE" => "\xC8\xAF",
"\xC8\xB0" => "\xC8\xB1",
"\xC8\xB2" => "\xC8\xB3",
"\xC8\xBA" => "\xE2\xB1\xA5",
"\xC8\xBB" => "\xC8\xBC",
"\xC8\xBD" => "\xC6\x9A",
"\xC8\xBE" => "\xE2\xB1\xA6",
"\xC9\x81" => "\xC9\x82",
"\xC9\x83" => "\xC6\x80",
"\xC9\x84" => "\xCA\x89",
"\xC9\x85" => "\xCA\x8C",
"\xC9\x86" => "\xC9\x87",
"\xC9\x88" => "\xC9\x89",
"\xC9\x8A" => "\xC9\x8B",
"\xC9\x8C" => "\xC9\x8D",
"\xC9\x8E" => "\xC9\x8F",
"\xCD\x85" => "\xCE\xB9",
"\xCD\xB0" => "\xCD\xB1",
"\xCD\xB2" => "\xCD\xB3",
"\xCD\xB6" => "\xCD\xB7",
"\xCD\xBF" => "\xCF\xB3",
"\xCE\x86" => "\xCE\xAC",
"\xCE\x88" => "\xCE\xAD",
"\xCE\x89" => "\xCE\xAE",
"\xCE\x8A" => "\xCE\xAF",
"\xCE\x8C" => "\xCF\x8C",
"\xCE\x8E" => "\xCF\x8D",
"\xCE\x8F" => "\xCF\x8E",
"\xCE\x91" => "\xCE\xB1",
"\xCE\x92" => "\xCE\xB2",
"\xCE\x93" => "\xCE\xB3",
"\xCE\x94" => "\xCE\xB4",
"\xCE\x95" => "\xCE\xB5",
"\xCE\x96" => "\xCE\xB6",
"\xCE\x97" => "\xCE\xB7",
"\xCE\x98" => "\xCE\xB8",
"\xCE\x99" => "\xCE\xB9",
"\xCE\x9A" => "\xCE\xBA",
"\xCE\x9B" => "\xCE\xBB",
"\xCE\x9C" => "\xCE\xBC",
"\xCE\x9D" => "\xCE\xBD",
"\xCE\x9E" => "\xCE\xBE",
"\xCE\x9F" => "\xCE\xBF",
"\xCE\xA0" => "\xCF\x80",
"\xCE\xA1" => "\xCF\x81",
"\xCE\xA3" => "\xCF\x83",
"\xCE\xA4" => "\xCF\x84",
"\xCE\xA5" => "\xCF\x85",
"\xCE\xA6" => "\xCF\x86",
"\xCE\xA7" => "\xCF\x87",
"\xCE\xA8" => "\xCF\x88",
"\xCE\xA9" => "\xCF\x89",
"\xCE\xAA" => "\xCF\x8A",
"\xCE\xAB" => "\xCF\x8B",
"\xCF\x82" => "\xCF\x83",
"\xCF\x8F" => "\xCF\x97",
"\xCF\x90" => "\xCE\xB2",
"\xCF\x91" => "\xCE\xB8",
"\xCF\x95" => "\xCF\x86",
"\xCF\x96" => "\xCF\x80",
"\xCF\x98" => "\xCF\x99",
"\xCF\x9A" => "\xCF\x9B",
"\xCF\x9C" => "\xCF\x9D",
"\xCF\x9E" => "\xCF\x9F",
"\xCF\xA0" => "\xCF\xA1",
"\xCF\xA2" => "\xCF\xA3",
"\xCF\xA4" => "\xCF\xA5",
"\xCF\xA6" => "\xCF\xA7",
"\xCF\xA8" => "\xCF\xA9",
"\xCF\xAA" => "\xCF\xAB",
"\xCF\xAC" => "\xCF\xAD",
"\xCF\xAE" => "\xCF\xAF",
"\xCF\xB0" => "\xCE\xBA",
"\xCF\xB1" => "\xCF\x81",
"\xCF\xB4" => "\xCE\xB8",
"\xCF\xB5" => "\xCE\xB5",
"\xCF\xB7" => "\xCF\xB8",
"\xCF\xB9" => "\xCF\xB2",
"\xCF\xBA" => "\xCF\xBB",
"\xCF\xBD" => "\xCD\xBB",
"\xCF\xBE" => "\xCD\xBC",
"\xCF\xBF" => "\xCD\xBD",
"\xD0\x80" => "\xD1\x90",
"\xD0\x81" => "\xD1\x91",
"\xD0\x82" => "\xD1\x92",
"\xD0\x83" => "\xD1\x93",
"\xD0\x84" => "\xD1\x94",
"\xD0\x85" => "\xD1\x95",
"\xD0\x86" => "\xD1\x96",
"\xD0\x87" => "\xD1\x97",
"\xD0\x88" => "\xD1\x98",
"\xD0\x89" => "\xD1\x99",
"\xD0\x8A" => "\xD1\x9A",
"\xD0\x8B" => "\xD1\x9B",
"\xD0\x8C" => "\xD1\x9C",
"\xD0\x8D" => "\xD1\x9D",
"\xD0\x8E" => "\xD1\x9E",
"\xD0\x8F" => "\xD1\x9F",
"\xD0\x90" => "\xD0\xB0",
"\xD0\x91" => "\xD0\xB1",
"\xD0\x92" => "\xD0\xB2",
"\xD0\x93" => "\xD0\xB3",
"\xD0\x94" => "\xD0\xB4",
"\xD0\x95" => "\xD0\xB5",
"\xD0\x96" => "\xD0\xB6",
"\xD0\x97" => "\xD0\xB7",
"\xD0\x98" => "\xD0\xB8",
"\xD0\x99" => "\xD0\xB9",
"\xD0\x9A" => "\xD0\xBA",
"\xD0\x9B" => "\xD0\xBB",
"\xD0\x9C" => "\xD0\xBC",
"\xD0\x9D" => "\xD0\xBD",
"\xD0\x9E" => "\xD0\xBE",
"\xD0\x9F" => "\xD0\xBF",
"\xD0\xA0" => "\xD1\x80",
"\xD0\xA1" => "\xD1\x81",
"\xD0\xA2" => "\xD1\x82",
"\xD0\xA3" => "\xD1\x83",
"\xD0\xA4" => "\xD1\x84",
"\xD0\xA5" => "\xD1\x85",
"\xD0\xA6" => "\xD1\x86",
"\xD0\xA7" => "\xD1\x87",
"\xD0\xA8" => "\xD1\x88",
"\xD0\xA9" => "\xD1\x89",
"\xD0\xAA" => "\xD1\x8A",
"\xD0\xAB" => "\xD1\x8B",
"\xD0\xAC" => "\xD1\x8C",
"\xD0\xAD" => "\xD1\x8D",
"\xD0\xAE" => "\xD1\x8E",
"\xD0\xAF" => "\xD1\x8F",
"\xD1\xA0" => "\xD1\xA1",
"\xD1\xA2" => "\xD1\xA3",
"\xD1\xA4" => "\xD1\xA5",
"\xD1\xA6" => "\xD1\xA7",
"\xD1\xA8" => "\xD1\xA9",
"\xD1\xAA" => "\xD1\xAB",
"\xD1\xAC" => "\xD1\xAD",
"\xD1\xAE" => "\xD1\xAF",
"\xD1\xB0" => "\xD1\xB1",
"\xD1\xB2" => "\xD1\xB3",
"\xD1\xB4" => "\xD1\xB5",
"\xD1\xB6" => "\xD1\xB7",
"\xD1\xB8" => "\xD1\xB9",
"\xD1\xBA" => "\xD1\xBB",
"\xD1\xBC" => "\xD1\xBD",
"\xD1\xBE" => "\xD1\xBF",
"\xD2\x80" => "\xD2\x81",
"\xD2\x8A" => "\xD2\x8B",
"\xD2\x8C" => "\xD2\x8D",
"\xD2\x8E" => "\xD2\x8F",
"\xD2\x90" => "\xD2\x91",
"\xD2\x92" => "\xD2\x93",
"\xD2\x94" => "\xD2\x95",
"\xD2\x96" => "\xD2\x97",
"\xD2\x98" => "\xD2\x99",
"\xD2\x9A" => "\xD2\x9B",
"\xD2\x9C" => "\xD2\x9D",
"\xD2\x9E" => "\xD2\x9F",
"\xD2\xA0" => "\xD2\xA1",
"\xD2\xA2" => "\xD2\xA3",
"\xD2\xA4" => "\xD2\xA5",
"\xD2\xA6" => "\xD2\xA7",
"\xD2\xA8" => "\xD2\xA9",
"\xD2\xAA" => "\xD2\xAB",
"\xD2\xAC" => "\xD2\xAD",
"\xD2\xAE" => "\xD2\xAF",
"\xD2\xB0" => "\xD2\xB1",
"\xD2\xB2" => "\xD2\xB3",
"\xD2\xB4" => "\xD2\xB5",
"\xD2\xB6" => "\xD2\xB7",
"\xD2\xB8" => "\xD2\xB9",
"\xD2\xBA" => "\xD2\xBB",
"\xD2\xBC" => "\xD2\xBD",
"\xD2\xBE" => "\xD2\xBF",
"\xD3\x80" => "\xD3\x8F",
"\xD3\x81" => "\xD3\x82",
"\xD3\x83" => "\xD3\x84",
"\xD3\x85" => "\xD3\x86",
"\xD3\x87" => "\xD3\x88",
"\xD3\x89" => "\xD3\x8A",
"\xD3\x8B" => "\xD3\x8C",
"\xD3\x8D" => "\xD3\x8E",
"\xD3\x90" => "\xD3\x91",
"\xD3\x92" => "\xD3\x93",
"\xD3\x94" => "\xD3\x95",
"\xD3\x96" => "\xD3\x97",
"\xD3\x98" => "\xD3\x99",
"\xD3\x9A" => "\xD3\x9B",
"\xD3\x9C" => "\xD3\x9D",
"\xD3\x9E" => "\xD3\x9F",
"\xD3\xA0" => "\xD3\xA1",
"\xD3\xA2" => "\xD3\xA3",
"\xD3\xA4" => "\xD3\xA5",
"\xD3\xA6" => "\xD3\xA7",
"\xD3\xA8" => "\xD3\xA9",
"\xD3\xAA" => "\xD3\xAB",
"\xD3\xAC" => "\xD3\xAD",
"\xD3\xAE" => "\xD3\xAF",
"\xD3\xB0" => "\xD3\xB1",
"\xD3\xB2" => "\xD3\xB3",
"\xD3\xB4" => "\xD3\xB5",
"\xD3\xB6" => "\xD3\xB7",
"\xD3\xB8" => "\xD3\xB9",
"\xD3\xBA" => "\xD3\xBB",
"\xD3\xBC" => "\xD3\xBD",
"\xD3\xBE" => "\xD3\xBF",
"\xD4\x80" => "\xD4\x81",
"\xD4\x82" => "\xD4\x83",
"\xD4\x84" => "\xD4\x85",
"\xD4\x86" => "\xD4\x87",
"\xD4\x88" => "\xD4\x89",
"\xD4\x8A" => "\xD4\x8B",
"\xD4\x8C" => "\xD4\x8D",
"\xD4\x8E" => "\xD4\x8F",
"\xD4\x90" => "\xD4\x91",
"\xD4\x92" => "\xD4\x93",
"\xD4\x94" => "\xD4\x95",
"\xD4\x96" => "\xD4\x97",
"\xD4\x98" => "\xD4\x99",
"\xD4\x9A" => "\xD4\x9B",
"\xD4\x9C" => "\xD4\x9D",
"\xD4\x9E" => "\xD4\x9F",
"\xD4\xA0" => "\xD4\xA1",
"\xD4\xA2" => "\xD4\xA3",
"\xD4\xA4" => "\xD4\xA5",
"\xD4\xA6" => "\xD4\xA7",
"\xD4\xA8" => "\xD4\xA9",
"\xD4\xAA" => "\xD4\xAB",
"\xD4\xAC" => "\xD4\xAD",
"\xD4\xAE" => "\xD4\xAF",
"\xD4\xB1" => "\xD5\xA1",
"\xD4\xB2" => "\xD5\xA2",
"\xD4\xB3" => "\xD5\xA3",
"\xD4\xB4" => "\xD5\xA4",
"\xD4\xB5" => "\xD5\xA5",
"\xD4\xB6" => "\xD5\xA6",
"\xD4\xB7" => "\xD5\xA7",
"\xD4\xB8" => "\xD5\xA8",
"\xD4\xB9" => "\xD5\xA9",
"\xD4\xBA" => "\xD5\xAA",
"\xD4\xBB" => "\xD5\xAB",
"\xD4\xBC" => "\xD5\xAC",
"\xD4\xBD" => "\xD5\xAD",
"\xD4\xBE" => "\xD5\xAE",
"\xD4\xBF" => "\xD5\xAF",
"\xD5\x80" => "\xD5\xB0",
"\xD5\x81" => "\xD5\xB1",
"\xD5\x82" => "\xD5\xB2",
"\xD5\x83" => "\xD5\xB3",
"\xD5\x84" => "\xD5\xB4",
"\xD5\x85" => "\xD5\xB5",
"\xD5\x86" => "\xD5\xB6",
"\xD5\x87" => "\xD5\xB7",
"\xD5\x88" => "\xD5\xB8",
"\xD5\x89" => "\xD5\xB9",
"\xD5\x8A" => "\xD5\xBA",
"\xD5\x8B" => "\xD5\xBB",
"\xD5\x8C" => "\xD5\xBC",
"\xD5\x8D" => "\xD5\xBD",
"\xD5\x8E" => "\xD5\xBE",
"\xD5\x8F" => "\xD5\xBF",
"\xD5\x90" => "\xD6\x80",
"\xD5\x91" => "\xD6\x81",
"\xD5\x92" => "\xD6\x82",
"\xD5\x93" => "\xD6\x83",
"\xD5\x94" => "\xD6\x84",
"\xD5\x95" => "\xD6\x85",
"\xD5\x96" => "\xD6\x86",
"\xE1\x82\xA0" => "\xE2\xB4\x80",
"\xE1\x82\xA1" => "\xE2\xB4\x81",
"\xE1\x82\xA2" => "\xE2\xB4\x82",
"\xE1\x82\xA3" => "\xE2\xB4\x83",
"\xE1\x82\xA4" => "\xE2\xB4\x84",
"\xE1\x82\xA5" => "\xE2\xB4\x85",
"\xE1\x82\xA6" => "\xE2\xB4\x86",
"\xE1\x82\xA7" => "\xE2\xB4\x87",
"\xE1\x82\xA8" => "\xE2\xB4\x88",
"\xE1\x82\xA9" => "\xE2\xB4\x89",
"\xE1\x82\xAA" => "\xE2\xB4\x8A",
"\xE1\x82\xAB" => "\xE2\xB4\x8B",
"\xE1\x82\xAC" => "\xE2\xB4\x8C",
"\xE1\x82\xAD" => "\xE2\xB4\x8D",
"\xE1\x82\xAE" => "\xE2\xB4\x8E",
"\xE1\x82\xAF" => "\xE2\xB4\x8F",
"\xE1\x82\xB0" => "\xE2\xB4\x90",
"\xE1\x82\xB1" => "\xE2\xB4\x91",
"\xE1\x82\xB2" => "\xE2\xB4\x92",
"\xE1\x82\xB3" => "\xE2\xB4\x93",
"\xE1\x82\xB4" => "\xE2\xB4\x94",
"\xE1\x82\xB5" => "\xE2\xB4\x95",
"\xE1\x82\xB6" => "\xE2\xB4\x96",
"\xE1\x82\xB7" => "\xE2\xB4\x97",
"\xE1\x82\xB8" => "\xE2\xB4\x98",
"\xE1\x82\xB9" => "\xE2\xB4\x99",
"\xE1\x82\xBA" => "\xE2\xB4\x9A",
"\xE1\x82\xBB" => "\xE2\xB4\x9B",
"\xE1\x82\xBC" => "\xE2\xB4\x9C",
"\xE1\x82\xBD" => "\xE2\xB4\x9D",
"\xE1\x82\xBE" => "\xE2\xB4\x9E",
"\xE1\x82\xBF" => "\xE2\xB4\x9F",
"\xE1\x83\x80" => "\xE2\xB4\xA0",
"\xE1\x83\x81" => "\xE2\xB4\xA1",
"\xE1\x83\x82" => "\xE2\xB4\xA2",
"\xE1\x83\x83" => "\xE2\xB4\xA3",
"\xE1\x83\x84" => "\xE2\xB4\xA4",
"\xE1\x83\x85" => "\xE2\xB4\xA5",
"\xE1\x83\x87" => "\xE2\xB4\xA7",
"\xE1\x83\x8D" => "\xE2\xB4\xAD",
"\xE1\x8F\xB8" => "\xE1\x8F\xB0",
"\xE1\x8F\xB9" => "\xE1\x8F\xB1",
"\xE1\x8F\xBA" => "\xE1\x8F\xB2",
"\xE1\x8F\xBB" => "\xE1\x8F\xB3",
"\xE1\x8F\xBC" => "\xE1\x8F\xB4",
"\xE1\x8F\xBD" => "\xE1\x8F\xB5",
"\xE1\xB2\x80" => "\xD0\xB2",
"\xE1\xB2\x81" => "\xD0\xB4",
"\xE1\xB2\x82" => "\xD0\xBE",
"\xE1\xB2\x83" => "\xD1\x81",
"\xE1\xB2\x84" => "\xD1\x82",
"\xE1\xB2\x85" => "\xD1\x82",
"\xE1\xB2\x86" => "\xD1\x8A",
"\xE1\xB2\x87" => "\xD1\xA3",
"\xE1\xB2\x88" => "\xEA\x99\x8B",
"\xE1\xB2\x90" => "\xE1\x83\x90",
"\xE1\xB2\x91" => "\xE1\x83\x91",
"\xE1\xB2\x92" => "\xE1\x83\x92",
"\xE1\xB2\x93" => "\xE1\x83\x93",
"\xE1\xB2\x94" => "\xE1\x83\x94",
"\xE1\xB2\x95" => "\xE1\x83\x95",
"\xE1\xB2\x96" => "\xE1\x83\x96",
"\xE1\xB2\x97" => "\xE1\x83\x97",
"\xE1\xB2\x98" => "\xE1\x83\x98",
"\xE1\xB2\x99" => "\xE1\x83\x99",
"\xE1\xB2\x9A" => "\xE1\x83\x9A",
"\xE1\xB2\x9B" => "\xE1\x83\x9B",
"\xE1\xB2\x9C" => "\xE1\x83\x9C",
"\xE1\xB2\x9D" => "\xE1\x83\x9D",
"\xE1\xB2\x9E" => "\xE1\x83\x9E",
"\xE1\xB2\x9F" => "\xE1\x83\x9F",
"\xE1\xB2\xA0" => "\xE1\x83\xA0",
"\xE1\xB2\xA1" => "\xE1\x83\xA1",
"\xE1\xB2\xA2" => "\xE1\x83\xA2",
"\xE1\xB2\xA3" => "\xE1\x83\xA3",
"\xE1\xB2\xA4" => "\xE1\x83\xA4",
"\xE1\xB2\xA5" => "\xE1\x83\xA5",
"\xE1\xB2\xA6" => "\xE1\x83\xA6",
"\xE1\xB2\xA7" => "\xE1\x83\xA7",
"\xE1\xB2\xA8" => "\xE1\x83\xA8",
"\xE1\xB2\xA9" => "\xE1\x83\xA9",
"\xE1\xB2\xAA" => "\xE1\x83\xAA",
"\xE1\xB2\xAB" => "\xE1\x83\xAB",
"\xE1\xB2\xAC" => "\xE1\x83\xAC",
"\xE1\xB2\xAD" => "\xE1\x83\xAD",
"\xE1\xB2\xAE" => "\xE1\x83\xAE",
"\xE1\xB2\xAF" => "\xE1\x83\xAF",
"\xE1\xB2\xB0" => "\xE1\x83\xB0",
"\xE1\xB2\xB1" => "\xE1\x83\xB1",
"\xE1\xB2\xB2" => "\xE1\x83\xB2",
"\xE1\xB2\xB3" => "\xE1\x83\xB3",
"\xE1\xB2\xB4" => "\xE1\x83\xB4",
"\xE1\xB2\xB5" => "\xE1\x83\xB5",
"\xE1\xB2\xB6" => "\xE1\x83\xB6",
"\xE1\xB2\xB7" => "\xE1\x83\xB7",
"\xE1\xB2\xB8" => "\xE1\x83\xB8",
"\xE1\xB2\xB9" => "\xE1\x83\xB9",
"\xE1\xB2\xBA" => "\xE1\x83\xBA",
"\xE1\xB2\xBD" => "\xE1\x83\xBD",
"\xE1\xB2\xBE" => "\xE1\x83\xBE",
"\xE1\xB2\xBF" => "\xE1\x83\xBF",
"\xE1\xB8\x80" => "\xE1\xB8\x81",
"\xE1\xB8\x82" => "\xE1\xB8\x83",
"\xE1\xB8\x84" => "\xE1\xB8\x85",
"\xE1\xB8\x86" => "\xE1\xB8\x87",
"\xE1\xB8\x88" => "\xE1\xB8\x89",
"\xE1\xB8\x8A" => "\xE1\xB8\x8B",
"\xE1\xB8\x8C" => "\xE1\xB8\x8D",
"\xE1\xB8\x8E" => "\xE1\xB8\x8F",
"\xE1\xB8\x90" => "\xE1\xB8\x91",
"\xE1\xB8\x92" => "\xE1\xB8\x93",
"\xE1\xB8\x94" => "\xE1\xB8\x95",
"\xE1\xB8\x96" => "\xE1\xB8\x97",
"\xE1\xB8\x98" => "\xE1\xB8\x99",
"\xE1\xB8\x9A" => "\xE1\xB8\x9B",
"\xE1\xB8\x9C" => "\xE1\xB8\x9D",
"\xE1\xB8\x9E" => "\xE1\xB8\x9F",
"\xE1\xB8\xA0" => "\xE1\xB8\xA1",
"\xE1\xB8\xA2" => "\xE1\xB8\xA3",
"\xE1\xB8\xA4" => "\xE1\xB8\xA5",
"\xE1\xB8\xA6" => "\xE1\xB8\xA7",
"\xE1\xB8\xA8" => "\xE1\xB8\xA9",
"\xE1\xB8\xAA" => "\xE1\xB8\xAB",
"\xE1\xB8\xAC" => "\xE1\xB8\xAD",
"\xE1\xB8\xAE" => "\xE1\xB8\xAF",
"\xE1\xB8\xB0" => "\xE1\xB8\xB1",
"\xE1\xB8\xB2" => "\xE1\xB8\xB3",
"\xE1\xB8\xB4" => "\xE1\xB8\xB5",
"\xE1\xB8\xB6" => "\xE1\xB8\xB7",
"\xE1\xB8\xB8" => "\xE1\xB8\xB9",
"\xE1\xB8\xBA" => "\xE1\xB8\xBB",
"\xE1\xB8\xBC" => "\xE1\xB8\xBD",
"\xE1\xB8\xBE" => "\xE1\xB8\xBF",
"\xE1\xB9\x80" => "\xE1\xB9\x81",
"\xE1\xB9\x82" => "\xE1\xB9\x83",
"\xE1\xB9\x84" => "\xE1\xB9\x85",
"\xE1\xB9\x86" => "\xE1\xB9\x87",
"\xE1\xB9\x88" => "\xE1\xB9\x89",
"\xE1\xB9\x8A" => "\xE1\xB9\x8B",
"\xE1\xB9\x8C" => "\xE1\xB9\x8D",
"\xE1\xB9\x8E" => "\xE1\xB9\x8F",
"\xE1\xB9\x90" => "\xE1\xB9\x91",
"\xE1\xB9\x92" => "\xE1\xB9\x93",
"\xE1\xB9\x94" => "\xE1\xB9\x95",
"\xE1\xB9\x96" => "\xE1\xB9\x97",
"\xE1\xB9\x98" => "\xE1\xB9\x99",
"\xE1\xB9\x9A" => "\xE1\xB9\x9B",
"\xE1\xB9\x9C" => "\xE1\xB9\x9D",
"\xE1\xB9\x9E" => "\xE1\xB9\x9F",
"\xE1\xB9\xA0" => "\xE1\xB9\xA1",
"\xE1\xB9\xA2" => "\xE1\xB9\xA3",
"\xE1\xB9\xA4" => "\xE1\xB9\xA5",
"\xE1\xB9\xA6" => "\xE1\xB9\xA7",
"\xE1\xB9\xA8" => "\xE1\xB9\xA9",
"\xE1\xB9\xAA" => "\xE1\xB9\xAB",
"\xE1\xB9\xAC" => "\xE1\xB9\xAD",
"\xE1\xB9\xAE" => "\xE1\xB9\xAF",
"\xE1\xB9\xB0" => "\xE1\xB9\xB1",
"\xE1\xB9\xB2" => "\xE1\xB9\xB3",
"\xE1\xB9\xB4" => "\xE1\xB9\xB5",
"\xE1\xB9\xB6" => "\xE1\xB9\xB7",
"\xE1\xB9\xB8" => "\xE1\xB9\xB9",
"\xE1\xB9\xBA" => "\xE1\xB9\xBB",
"\xE1\xB9\xBC" => "\xE1\xB9\xBD",
"\xE1\xB9\xBE" => "\xE1\xB9\xBF",
"\xE1\xBA\x80" => "\xE1\xBA\x81",
"\xE1\xBA\x82" => "\xE1\xBA\x83",
"\xE1\xBA\x84" => "\xE1\xBA\x85",
"\xE1\xBA\x86" => "\xE1\xBA\x87",
"\xE1\xBA\x88" => "\xE1\xBA\x89",
"\xE1\xBA\x8A" => "\xE1\xBA\x8B",
"\xE1\xBA\x8C" => "\xE1\xBA\x8D",
"\xE1\xBA\x8E" => "\xE1\xBA\x8F",
"\xE1\xBA\x90" => "\xE1\xBA\x91",
"\xE1\xBA\x92" => "\xE1\xBA\x93",
"\xE1\xBA\x94" => "\xE1\xBA\x95",
"\xE1\xBA\x9B" => "\xE1\xB9\xA1",
"\xE1\xBA\x9E" => "\xC3\x9F",
"\xE1\xBA\xA0" => "\xE1\xBA\xA1",
"\xE1\xBA\xA2" => "\xE1\xBA\xA3",
"\xE1\xBA\xA4" => "\xE1\xBA\xA5",
"\xE1\xBA\xA6" => "\xE1\xBA\xA7",
"\xE1\xBA\xA8" => "\xE1\xBA\xA9",
"\xE1\xBA\xAA" => "\xE1\xBA\xAB",
"\xE1\xBA\xAC" => "\xE1\xBA\xAD",
"\xE1\xBA\xAE" => "\xE1\xBA\xAF",
"\xE1\xBA\xB0" => "\xE1\xBA\xB1",
"\xE1\xBA\xB2" => "\xE1\xBA\xB3",
"\xE1\xBA\xB4" => "\xE1\xBA\xB5",
"\xE1\xBA\xB6" => "\xE1\xBA\xB7",
"\xE1\xBA\xB8" => "\xE1\xBA\xB9",
"\xE1\xBA\xBA" => "\xE1\xBA\xBB",
"\xE1\xBA\xBC" => "\xE1\xBA\xBD",
"\xE1\xBA\xBE" => "\xE1\xBA\xBF",
"\xE1\xBB\x80" => "\xE1\xBB\x81",
"\xE1\xBB\x82" => "\xE1\xBB\x83",
"\xE1\xBB\x84" => "\xE1\xBB\x85",
"\xE1\xBB\x86" => "\xE1\xBB\x87",
"\xE1\xBB\x88" => "\xE1\xBB\x89",
"\xE1\xBB\x8A" => "\xE1\xBB\x8B",
"\xE1\xBB\x8C" => "\xE1\xBB\x8D",
"\xE1\xBB\x8E" => "\xE1\xBB\x8F",
"\xE1\xBB\x90" => "\xE1\xBB\x91",
"\xE1\xBB\x92" => "\xE1\xBB\x93",
"\xE1\xBB\x94" => "\xE1\xBB\x95",
"\xE1\xBB\x96" => "\xE1\xBB\x97",
"\xE1\xBB\x98" => "\xE1\xBB\x99",
"\xE1\xBB\x9A" => "\xE1\xBB\x9B",
"\xE1\xBB\x9C" => "\xE1\xBB\x9D",
"\xE1\xBB\x9E" => "\xE1\xBB\x9F",
"\xE1\xBB\xA0" => "\xE1\xBB\xA1",
"\xE1\xBB\xA2" => "\xE1\xBB\xA3",
"\xE1\xBB\xA4" => "\xE1\xBB\xA5",
"\xE1\xBB\xA6" => "\xE1\xBB\xA7",
"\xE1\xBB\xA8" => "\xE1\xBB\xA9",
"\xE1\xBB\xAA" => "\xE1\xBB\xAB",
"\xE1\xBB\xAC" => "\xE1\xBB\xAD",
"\xE1\xBB\xAE" => "\xE1\xBB\xAF",
"\xE1\xBB\xB0" => "\xE1\xBB\xB1",
"\xE1\xBB\xB2" => "\xE1\xBB\xB3",
"\xE1\xBB\xB4" => "\xE1\xBB\xB5",
"\xE1\xBB\xB6" => "\xE1\xBB\xB7",
"\xE1\xBB\xB8" => "\xE1\xBB\xB9",
"\xE1\xBB\xBA" => "\xE1\xBB\xBB",
"\xE1\xBB\xBC" => "\xE1\xBB\xBD",
"\xE1\xBB\xBE" => "\xE1\xBB\xBF",
"\xE1\xBC\x88" => "\xE1\xBC\x80",
"\xE1\xBC\x89" => "\xE1\xBC\x81",
"\xE1\xBC\x8A" => "\xE1\xBC\x82",
"\xE1\xBC\x8B" => "\xE1\xBC\x83",
"\xE1\xBC\x8C" => "\xE1\xBC\x84",
"\xE1\xBC\x8D" => "\xE1\xBC\x85",
"\xE1\xBC\x8E" => "\xE1\xBC\x86",
"\xE1\xBC\x8F" => "\xE1\xBC\x87",
"\xE1\xBC\x98" => "\xE1\xBC\x90",
"\xE1\xBC\x99" => "\xE1\xBC\x91",
"\xE1\xBC\x9A" => "\xE1\xBC\x92",
"\xE1\xBC\x9B" => "\xE1\xBC\x93",
"\xE1\xBC\x9C" => "\xE1\xBC\x94",
"\xE1\xBC\x9D" => "\xE1\xBC\x95",
"\xE1\xBC\xA8" => "\xE1\xBC\xA0",
"\xE1\xBC\xA9" => "\xE1\xBC\xA1",
"\xE1\xBC\xAA" => "\xE1\xBC\xA2",
"\xE1\xBC\xAB" => "\xE1\xBC\xA3",
"\xE1\xBC\xAC" => "\xE1\xBC\xA4",
"\xE1\xBC\xAD" => "\xE1\xBC\xA5",
"\xE1\xBC\xAE" => "\xE1\xBC\xA6",
"\xE1\xBC\xAF" => "\xE1\xBC\xA7",
"\xE1\xBC\xB8" => "\xE1\xBC\xB0",
"\xE1\xBC\xB9" => "\xE1\xBC\xB1",
"\xE1\xBC\xBA" => "\xE1\xBC\xB2",
"\xE1\xBC\xBB" => "\xE1\xBC\xB3",
"\xE1\xBC\xBC" => "\xE1\xBC\xB4",
"\xE1\xBC\xBD" => "\xE1\xBC\xB5",
"\xE1\xBC\xBE" => "\xE1\xBC\xB6",
"\xE1\xBC\xBF" => "\xE1\xBC\xB7",
Find: Select
/**
* Helper function for utf8_casefold.
*
* Developers: Do not update the data in this function manually. Instead,
* run "php -f other/update_unicode_data.php" on the command line.
*
* @return array Casefolding maps.
*/
function utf8_casefold_maps()
Replace With: Select
"\xE1\xBD\x88" => "\xE1\xBD\x80",
"\xE1\xBD\x89" => "\xE1\xBD\x81",
"\xE1\xBD\x8A" => "\xE1\xBD\x82",
"\xE1\xBD\x8B" => "\xE1\xBD\x83",
"\xE1\xBD\x8C" => "\xE1\xBD\x84",
"\xE1\xBD\x8D" => "\xE1\xBD\x85",
"\xE1\xBD\x99" => "\xE1\xBD\x91",
"\xE1\xBD\x9B" => "\xE1\xBD\x93",
"\xE1\xBD\x9D" => "\xE1\xBD\x95",
"\xE1\xBD\x9F" => "\xE1\xBD\x97",
"\xE1\xBD\xA8" => "\xE1\xBD\xA0",
"\xE1\xBD\xA9" => "\xE1\xBD\xA1",
"\xE1\xBD\xAA" => "\xE1\xBD\xA2",
"\xE1\xBD\xAB" => "\xE1\xBD\xA3",
"\xE1\xBD\xAC" => "\xE1\xBD\xA4",
"\xE1\xBD\xAD" => "\xE1\xBD\xA5",
"\xE1\xBD\xAE" => "\xE1\xBD\xA6",
"\xE1\xBD\xAF" => "\xE1\xBD\xA7",
"\xE1\xBE\x88" => "\xE1\xBE\x80",
"\xE1\xBE\x89" => "\xE1\xBE\x81",
"\xE1\xBE\x8A" => "\xE1\xBE\x82",
"\xE1\xBE\x8B" => "\xE1\xBE\x83",
"\xE1\xBE\x8C" => "\xE1\xBE\x84",
"\xE1\xBE\x8D" => "\xE1\xBE\x85",
"\xE1\xBE\x8E" => "\xE1\xBE\x86",
"\xE1\xBE\x8F" => "\xE1\xBE\x87",
"\xE1\xBE\x98" => "\xE1\xBE\x90",
"\xE1\xBE\x99" => "\xE1\xBE\x91",
"\xE1\xBE\x9A" => "\xE1\xBE\x92",
"\xE1\xBE\x9B" => "\xE1\xBE\x93",
"\xE1\xBE\x9C" => "\xE1\xBE\x94",
"\xE1\xBE\x9D" => "\xE1\xBE\x95",
"\xE1\xBE\x9E" => "\xE1\xBE\x96",
"\xE1\xBE\x9F" => "\xE1\xBE\x97",
"\xE1\xBE\xA8" => "\xE1\xBE\xA0",
"\xE1\xBE\xA9" => "\xE1\xBE\xA1",
"\xE1\xBE\xAA" => "\xE1\xBE\xA2",
"\xE1\xBE\xAB" => "\xE1\xBE\xA3",
"\xE1\xBE\xAC" => "\xE1\xBE\xA4",
"\xE1\xBE\xAD" => "\xE1\xBE\xA5",
"\xE1\xBE\xAE" => "\xE1\xBE\xA6",
"\xE1\xBE\xAF" => "\xE1\xBE\xA7",
"\xE1\xBE\xB8" => "\xE1\xBE\xB0",
"\xE1\xBE\xB9" => "\xE1\xBE\xB1",
"\xE1\xBE\xBA" => "\xE1\xBD\xB0",
"\xE1\xBE\xBB" => "\xE1\xBD\xB1",
"\xE1\xBE\xBC" => "\xE1\xBE\xB3",
"\xE1\xBE\xBE" => "\xCE\xB9",
"\xE1\xBF\x88" => "\xE1\xBD\xB2",
"\xE1\xBF\x89" => "\xE1\xBD\xB3",
"\xE1\xBF\x8A" => "\xE1\xBD\xB4",
"\xE1\xBF\x8B" => "\xE1\xBD\xB5",
"\xE1\xBF\x8C" => "\xE1\xBF\x83",
"\xE1\xBF\x98" => "\xE1\xBF\x90",
"\xE1\xBF\x99" => "\xE1\xBF\x91",
"\xE1\xBF\x9A" => "\xE1\xBD\xB6",
"\xE1\xBF\x9B" => "\xE1\xBD\xB7",
"\xE1\xBF\xA8" => "\xE1\xBF\xA0",
"\xE1\xBF\xA9" => "\xE1\xBF\xA1",
"\xE1\xBF\xAA" => "\xE1\xBD\xBA",
"\xE1\xBF\xAB" => "\xE1\xBD\xBB",
"\xE1\xBF\xAC" => "\xE1\xBF\xA5",
"\xE1\xBF\xB8" => "\xE1\xBD\xB8",
"\xE1\xBF\xB9" => "\xE1\xBD\xB9",
"\xE1\xBF\xBA" => "\xE1\xBD\xBC",
"\xE1\xBF\xBB" => "\xE1\xBD\xBD",
"\xE1\xBF\xBC" => "\xE1\xBF\xB3",
"\xE2\x84\xA6" => "\xCF\x89",
"\xE2\x84\xAA" => "\x6B",
"\xE2\x84\xAB" => "\xC3\xA5",
"\xE2\x84\xB2" => "\xE2\x85\x8E",
"\xE2\x85\xA0" => "\xE2\x85\xB0",
"\xE2\x85\xA1" => "\xE2\x85\xB1",
"\xE2\x85\xA2" => "\xE2\x85\xB2",
"\xE2\x85\xA3" => "\xE2\x85\xB3",
"\xE2\x85\xA4" => "\xE2\x85\xB4",
"\xE2\x85\xA5" => "\xE2\x85\xB5",
"\xE2\x85\xA6" => "\xE2\x85\xB6",
"\xE2\x85\xA7" => "\xE2\x85\xB7",
"\xE2\x85\xA8" => "\xE2\x85\xB8",
"\xE2\x85\xA9" => "\xE2\x85\xB9",
"\xE2\x85\xAA" => "\xE2\x85\xBA",
"\xE2\x85\xAB" => "\xE2\x85\xBB",
"\xE2\x85\xAC" => "\xE2\x85\xBC",
"\xE2\x85\xAD" => "\xE2\x85\xBD",
"\xE2\x85\xAE" => "\xE2\x85\xBE",
"\xE2\x85\xAF" => "\xE2\x85\xBF",
"\xE2\x86\x83" => "\xE2\x86\x84",
"\xE2\x92\xB6" => "\xE2\x93\x90",
"\xE2\x92\xB7" => "\xE2\x93\x91",
"\xE2\x92\xB8" => "\xE2\x93\x92",
"\xE2\x92\xB9" => "\xE2\x93\x93",
"\xE2\x92\xBA" => "\xE2\x93\x94",
"\xE2\x92\xBB" => "\xE2\x93\x95",
"\xE2\x92\xBC" => "\xE2\x93\x96",
"\xE2\x92\xBD" => "\xE2\x93\x97",
"\xE2\x92\xBE" => "\xE2\x93\x98",
"\xE2\x92\xBF" => "\xE2\x93\x99",
"\xE2\x93\x80" => "\xE2\x93\x9A",
"\xE2\x93\x81" => "\xE2\x93\x9B",
"\xE2\x93\x82" => "\xE2\x93\x9C",
"\xE2\x93\x83" => "\xE2\x93\x9D",
"\xE2\x93\x84" => "\xE2\x93\x9E",
"\xE2\x93\x85" => "\xE2\x93\x9F",
"\xE2\x93\x86" => "\xE2\x93\xA0",
"\xE2\x93\x87" => "\xE2\x93\xA1",
"\xE2\x93\x88" => "\xE2\x93\xA2",
"\xE2\x93\x89" => "\xE2\x93\xA3",
"\xE2\x93\x8A" => "\xE2\x93\xA4",
"\xE2\x93\x8B" => "\xE2\x93\xA5",
"\xE2\x93\x8C" => "\xE2\x93\xA6",
"\xE2\x93\x8D" => "\xE2\x93\xA7",
"\xE2\x93\x8E" => "\xE2\x93\xA8",
"\xE2\x93\x8F" => "\xE2\x93\xA9",
"\xE2\xB0\x80" => "\xE2\xB0\xB0",
"\xE2\xB0\x81" => "\xE2\xB0\xB1",
"\xE2\xB0\x82" => "\xE2\xB0\xB2",
"\xE2\xB0\x83" => "\xE2\xB0\xB3",
"\xE2\xB0\x84" => "\xE2\xB0\xB4",
"\xE2\xB0\x85" => "\xE2\xB0\xB5",
"\xE2\xB0\x86" => "\xE2\xB0\xB6",
"\xE2\xB0\x87" => "\xE2\xB0\xB7",
"\xE2\xB0\x88" => "\xE2\xB0\xB8",
"\xE2\xB0\x89" => "\xE2\xB0\xB9",
"\xE2\xB0\x8A" => "\xE2\xB0\xBA",
"\xE2\xB0\x8B" => "\xE2\xB0\xBB",
"\xE2\xB0\x8C" => "\xE2\xB0\xBC",
"\xE2\xB0\x8D" => "\xE2\xB0\xBD",
"\xE2\xB0\x8E" => "\xE2\xB0\xBE",
"\xE2\xB0\x8F" => "\xE2\xB0\xBF",
"\xE2\xB0\x90" => "\xE2\xB1\x80",
"\xE2\xB0\x91" => "\xE2\xB1\x81",
"\xE2\xB0\x92" => "\xE2\xB1\x82",
"\xE2\xB0\x93" => "\xE2\xB1\x83",
"\xE2\xB0\x94" => "\xE2\xB1\x84",
"\xE2\xB0\x95" => "\xE2\xB1\x85",
"\xE2\xB0\x96" => "\xE2\xB1\x86",
"\xE2\xB0\x97" => "\xE2\xB1\x87",
"\xE2\xB0\x98" => "\xE2\xB1\x88",
"\xE2\xB0\x99" => "\xE2\xB1\x89",
"\xE2\xB0\x9A" => "\xE2\xB1\x8A",
"\xE2\xB0\x9B" => "\xE2\xB1\x8B",
"\xE2\xB0\x9C" => "\xE2\xB1\x8C",
"\xE2\xB0\x9D" => "\xE2\xB1\x8D",
"\xE2\xB0\x9E" => "\xE2\xB1\x8E",
"\xE2\xB0\x9F" => "\xE2\xB1\x8F",
"\xE2\xB0\xA0" => "\xE2\xB1\x90",
"\xE2\xB0\xA1" => "\xE2\xB1\x91",
"\xE2\xB0\xA2" => "\xE2\xB1\x92",
"\xE2\xB0\xA3" => "\xE2\xB1\x93",
"\xE2\xB0\xA4" => "\xE2\xB1\x94",
"\xE2\xB0\xA5" => "\xE2\xB1\x95",
"\xE2\xB0\xA6" => "\xE2\xB1\x96",
"\xE2\xB0\xA7" => "\xE2\xB1\x97",
"\xE2\xB0\xA8" => "\xE2\xB1\x98",
"\xE2\xB0\xA9" => "\xE2\xB1\x99",
"\xE2\xB0\xAA" => "\xE2\xB1\x9A",
"\xE2\xB0\xAB" => "\xE2\xB1\x9B",
"\xE2\xB0\xAC" => "\xE2\xB1\x9C",
"\xE2\xB0\xAD" => "\xE2\xB1\x9D",
"\xE2\xB0\xAE" => "\xE2\xB1\x9E",
"\xE2\xB0\xAF" => "\xE2\xB1\x9F",
"\xE2\xB1\xA0" => "\xE2\xB1\xA1",
"\xE2\xB1\xA2" => "\xC9\xAB",
"\xE2\xB1\xA3" => "\xE1\xB5\xBD",
"\xE2\xB1\xA4" => "\xC9\xBD",
"\xE2\xB1\xA7" => "\xE2\xB1\xA8",
"\xE2\xB1\xA9" => "\xE2\xB1\xAA",
"\xE2\xB1\xAB" => "\xE2\xB1\xAC",
"\xE2\xB1\xAD" => "\xC9\x91",
"\xE2\xB1\xAE" => "\xC9\xB1",
"\xE2\xB1\xAF" => "\xC9\x90",
"\xE2\xB1\xB0" => "\xC9\x92",
"\xE2\xB1\xB2" => "\xE2\xB1\xB3",
"\xE2\xB1\xB5" => "\xE2\xB1\xB6",
"\xE2\xB1\xBE" => "\xC8\xBF",
"\xE2\xB1\xBF" => "\xC9\x80",
"\xE2\xB2\x80" => "\xE2\xB2\x81",
"\xE2\xB2\x82" => "\xE2\xB2\x83",
"\xE2\xB2\x84" => "\xE2\xB2\x85",
"\xE2\xB2\x86" => "\xE2\xB2\x87",
"\xE2\xB2\x88" => "\xE2\xB2\x89",
"\xE2\xB2\x8A" => "\xE2\xB2\x8B",
"\xE2\xB2\x8C" => "\xE2\xB2\x8D",
"\xE2\xB2\x8E" => "\xE2\xB2\x8F",
"\xE2\xB2\x90" => "\xE2\xB2\x91",
"\xE2\xB2\x92" => "\xE2\xB2\x93",
"\xE2\xB2\x94" => "\xE2\xB2\x95",
"\xE2\xB2\x96" => "\xE2\xB2\x97",
"\xE2\xB2\x98" => "\xE2\xB2\x99",
"\xE2\xB2\x9A" => "\xE2\xB2\x9B",
"\xE2\xB2\x9C" => "\xE2\xB2\x9D",
"\xE2\xB2\x9E" => "\xE2\xB2\x9F",
"\xE2\xB2\xA0" => "\xE2\xB2\xA1",
"\xE2\xB2\xA2" => "\xE2\xB2\xA3",
"\xE2\xB2\xA4" => "\xE2\xB2\xA5",
"\xE2\xB2\xA6" => "\xE2\xB2\xA7",
"\xE2\xB2\xA8" => "\xE2\xB2\xA9",
"\xE2\xB2\xAA" => "\xE2\xB2\xAB",
"\xE2\xB2\xAC" => "\xE2\xB2\xAD",
"\xE2\xB2\xAE" => "\xE2\xB2\xAF",
"\xE2\xB2\xB0" => "\xE2\xB2\xB1",
"\xE2\xB2\xB2" => "\xE2\xB2\xB3",
"\xE2\xB2\xB4" => "\xE2\xB2\xB5",
"\xE2\xB2\xB6" => "\xE2\xB2\xB7",
"\xE2\xB2\xB8" => "\xE2\xB2\xB9",
"\xE2\xB2\xBA" => "\xE2\xB2\xBB",
"\xE2\xB2\xBC" => "\xE2\xB2\xBD",
"\xE2\xB2\xBE" => "\xE2\xB2\xBF",
"\xE2\xB3\x80" => "\xE2\xB3\x81",
"\xE2\xB3\x82" => "\xE2\xB3\x83",
"\xE2\xB3\x84" => "\xE2\xB3\x85",
"\xE2\xB3\x86" => "\xE2\xB3\x87",
"\xE2\xB3\x88" => "\xE2\xB3\x89",
"\xE2\xB3\x8A" => "\xE2\xB3\x8B",
"\xE2\xB3\x8C" => "\xE2\xB3\x8D",
"\xE2\xB3\x8E" => "\xE2\xB3\x8F",
"\xE2\xB3\x90" => "\xE2\xB3\x91",
"\xE2\xB3\x92" => "\xE2\xB3\x93",
"\xE2\xB3\x94" => "\xE2\xB3\x95",
"\xE2\xB3\x96" => "\xE2\xB3\x97",
"\xE2\xB3\x98" => "\xE2\xB3\x99",
"\xE2\xB3\x9A" => "\xE2\xB3\x9B",
"\xE2\xB3\x9C" => "\xE2\xB3\x9D",
"\xE2\xB3\x9E" => "\xE2\xB3\x9F",
"\xE2\xB3\xA0" => "\xE2\xB3\xA1",
"\xE2\xB3\xA2" => "\xE2\xB3\xA3",
"\xE2\xB3\xAB" => "\xE2\xB3\xAC",
"\xE2\xB3\xAD" => "\xE2\xB3\xAE",
"\xE2\xB3\xB2" => "\xE2\xB3\xB3",
"\xEA\x99\x80" => "\xEA\x99\x81",
"\xEA\x99\x82" => "\xEA\x99\x83",
"\xEA\x99\x84" => "\xEA\x99\x85",
"\xEA\x99\x86" => "\xEA\x99\x87",
"\xEA\x99\x88" => "\xEA\x99\x89",
"\xEA\x99\x8A" => "\xEA\x99\x8B",
"\xEA\x99\x8C" => "\xEA\x99\x8D",
"\xEA\x99\x8E" => "\xEA\x99\x8F",
"\xEA\x99\x90" => "\xEA\x99\x91",
"\xEA\x99\x92" => "\xEA\x99\x93",
"\xEA\x99\x94" => "\xEA\x99\x95",
"\xEA\x99\x96" => "\xEA\x99\x97",
"\xEA\x99\x98" => "\xEA\x99\x99",
"\xEA\x99\x9A" => "\xEA\x99\x9B",
"\xEA\x99\x9C" => "\xEA\x99\x9D",
"\xEA\x99\x9E" => "\xEA\x99\x9F",
"\xEA\x99\xA0" => "\xEA\x99\xA1",
"\xEA\x99\xA2" => "\xEA\x99\xA3",
"\xEA\x99\xA4" => "\xEA\x99\xA5",
"\xEA\x99\xA6" => "\xEA\x99\xA7",
"\xEA\x99\xA8" => "\xEA\x99\xA9",
"\xEA\x99\xAA" => "\xEA\x99\xAB",
"\xEA\x99\xAC" => "\xEA\x99\xAD",
"\xEA\x9A\x80" => "\xEA\x9A\x81",
"\xEA\x9A\x82" => "\xEA\x9A\x83",
"\xEA\x9A\x84" => "\xEA\x9A\x85",
"\xEA\x9A\x86" => "\xEA\x9A\x87",
"\xEA\x9A\x88" => "\xEA\x9A\x89",
"\xEA\x9A\x8A" => "\xEA\x9A\x8B",
"\xEA\x9A\x8C" => "\xEA\x9A\x8D",
"\xEA\x9A\x8E" => "\xEA\x9A\x8F",
"\xEA\x9A\x90" => "\xEA\x9A\x91",
"\xEA\x9A\x92" => "\xEA\x9A\x93",
"\xEA\x9A\x94" => "\xEA\x9A\x95",
"\xEA\x9A\x96" => "\xEA\x9A\x97",
"\xEA\x9A\x98" => "\xEA\x9A\x99",
"\xEA\x9A\x9A" => "\xEA\x9A\x9B",
"\xEA\x9C\xA2" => "\xEA\x9C\xA3",
"\xEA\x9C\xA4" => "\xEA\x9C\xA5",
"\xEA\x9C\xA6" => "\xEA\x9C\xA7",
"\xEA\x9C\xA8" => "\xEA\x9C\xA9",
"\xEA\x9C\xAA" => "\xEA\x9C\xAB",
"\xEA\x9C\xAC" => "\xEA\x9C\xAD",
"\xEA\x9C\xAE" => "\xEA\x9C\xAF",
"\xEA\x9C\xB2" => "\xEA\x9C\xB3",
"\xEA\x9C\xB4" => "\xEA\x9C\xB5",
"\xEA\x9C\xB6" => "\xEA\x9C\xB7",
"\xEA\x9C\xB8" => "\xEA\x9C\xB9",
"\xEA\x9C\xBA" => "\xEA\x9C\xBB",
"\xEA\x9C\xBC" => "\xEA\x9C\xBD",
"\xEA\x9C\xBE" => "\xEA\x9C\xBF",
"\xEA\x9D\x80" => "\xEA\x9D\x81",
"\xEA\x9D\x82" => "\xEA\x9D\x83",
"\xEA\x9D\x84" => "\xEA\x9D\x85",
"\xEA\x9D\x86" => "\xEA\x9D\x87",
"\xEA\x9D\x88" => "\xEA\x9D\x89",
"\xEA\x9D\x8A" => "\xEA\x9D\x8B",
"\xEA\x9D\x8C" => "\xEA\x9D\x8D",
"\xEA\x9D\x8E" => "\xEA\x9D\x8F",
"\xEA\x9D\x90" => "\xEA\x9D\x91",
"\xEA\x9D\x92" => "\xEA\x9D\x93",
"\xEA\x9D\x94" => "\xEA\x9D\x95",
"\xEA\x9D\x96" => "\xEA\x9D\x97",
"\xEA\x9D\x98" => "\xEA\x9D\x99",
"\xEA\x9D\x9A" => "\xEA\x9D\x9B",
"\xEA\x9D\x9C" => "\xEA\x9D\x9D",
"\xEA\x9D\x9E" => "\xEA\x9D\x9F",
"\xEA\x9D\xA0" => "\xEA\x9D\xA1",
"\xEA\x9D\xA2" => "\xEA\x9D\xA3",
"\xEA\x9D\xA4" => "\xEA\x9D\xA5",
"\xEA\x9D\xA6" => "\xEA\x9D\xA7",
"\xEA\x9D\xA8" => "\xEA\x9D\xA9",
"\xEA\x9D\xAA" => "\xEA\x9D\xAB",
"\xEA\x9D\xAC" => "\xEA\x9D\xAD",
"\xEA\x9D\xAE" => "\xEA\x9D\xAF",
"\xEA\x9D\xB9" => "\xEA\x9D\xBA",
"\xEA\x9D\xBB" => "\xEA\x9D\xBC",
"\xEA\x9D\xBD" => "\xE1\xB5\xB9",
"\xEA\x9D\xBE" => "\xEA\x9D\xBF",
"\xEA\x9E\x80" => "\xEA\x9E\x81",
"\xEA\x9E\x82" => "\xEA\x9E\x83",
"\xEA\x9E\x84" => "\xEA\x9E\x85",
"\xEA\x9E\x86" => "\xEA\x9E\x87",
"\xEA\x9E\x8B" => "\xEA\x9E\x8C",
"\xEA\x9E\x8D" => "\xC9\xA5",
"\xEA\x9E\x90" => "\xEA\x9E\x91",
"\xEA\x9E\x92" => "\xEA\x9E\x93",
"\xEA\x9E\x96" => "\xEA\x9E\x97",
"\xEA\x9E\x98" => "\xEA\x9E\x99",
"\xEA\x9E\x9A" => "\xEA\x9E\x9B",
"\xEA\x9E\x9C" => "\xEA\x9E\x9D",
"\xEA\x9E\x9E" => "\xEA\x9E\x9F",
"\xEA\x9E\xA0" => "\xEA\x9E\xA1",
"\xEA\x9E\xA2" => "\xEA\x9E\xA3",
"\xEA\x9E\xA4" => "\xEA\x9E\xA5",
"\xEA\x9E\xA6" => "\xEA\x9E\xA7",
"\xEA\x9E\xA8" => "\xEA\x9E\xA9",
"\xEA\x9E\xAA" => "\xC9\xA6",
"\xEA\x9E\xAB" => "\xC9\x9C",
"\xEA\x9E\xAC" => "\xC9\xA1",
"\xEA\x9E\xAD" => "\xC9\xAC",
"\xEA\x9E\xAE" => "\xC9\xAA",
"\xEA\x9E\xB0" => "\xCA\x9E",
"\xEA\x9E\xB1" => "\xCA\x87",
"\xEA\x9E\xB2" => "\xCA\x9D",
"\xEA\x9E\xB3" => "\xEA\xAD\x93",
"\xEA\x9E\xB4" => "\xEA\x9E\xB5",
"\xEA\x9E\xB6" => "\xEA\x9E\xB7",
"\xEA\x9E\xB8" => "\xEA\x9E\xB9",
"\xEA\x9E\xBA" => "\xEA\x9E\xBB",
"\xEA\x9E\xBC" => "\xEA\x9E\xBD",
"\xEA\x9E\xBE" => "\xEA\x9E\xBF",
"\xEA\x9F\x80" => "\xEA\x9F\x81",
"\xEA\x9F\x82" => "\xEA\x9F\x83",
"\xEA\x9F\x84" => "\xEA\x9E\x94",
"\xEA\x9F\x85" => "\xCA\x82",
"\xEA\x9F\x86" => "\xE1\xB6\x8E",
"\xEA\x9F\x87" => "\xEA\x9F\x88",
"\xEA\x9F\x89" => "\xEA\x9F\x8A",
"\xEA\x9F\x90" => "\xEA\x9F\x91",
"\xEA\x9F\x96" => "\xEA\x9F\x97",
"\xEA\x9F\x98" => "\xEA\x9F\x99",
"\xEA\x9F\xB5" => "\xEA\x9F\xB6",
"\xEA\xAD\xB0" => "\xE1\x8E\xA0",
"\xEA\xAD\xB1" => "\xE1\x8E\xA1",
"\xEA\xAD\xB2" => "\xE1\x8E\xA2",
"\xEA\xAD\xB3" => "\xE1\x8E\xA3",
"\xEA\xAD\xB4" => "\xE1\x8E\xA4",
"\xEA\xAD\xB5" => "\xE1\x8E\xA5",
"\xEA\xAD\xB6" => "\xE1\x8E\xA6",
"\xEA\xAD\xB7" => "\xE1\x8E\xA7",
"\xEA\xAD\xB8" => "\xE1\x8E\xA8",
"\xEA\xAD\xB9" => "\xE1\x8E\xA9",
"\xEA\xAD\xBA" => "\xE1\x8E\xAA",
"\xEA\xAD\xBB" => "\xE1\x8E\xAB",
"\xEA\xAD\xBC" => "\xE1\x8E\xAC",
"\xEA\xAD\xBD" => "\xE1\x8E\xAD",
"\xEA\xAD\xBE" => "\xE1\x8E\xAE",
"\xEA\xAD\xBF" => "\xE1\x8E\xAF",
"\xEA\xAE\x80" => "\xE1\x8E\xB0",
"\xEA\xAE\x81" => "\xE1\x8E\xB1",
"\xEA\xAE\x82" => "\xE1\x8E\xB2",
"\xEA\xAE\x83" => "\xE1\x8E\xB3",
"\xEA\xAE\x84" => "\xE1\x8E\xB4",
"\xEA\xAE\x85" => "\xE1\x8E\xB5",
"\xEA\xAE\x86" => "\xE1\x8E\xB6",
"\xEA\xAE\x87" => "\xE1\x8E\xB7",
"\xEA\xAE\x88" => "\xE1\x8E\xB8",
"\xEA\xAE\x89" => "\xE1\x8E\xB9",
"\xEA\xAE\x8A" => "\xE1\x8E\xBA",
"\xEA\xAE\x8B" => "\xE1\x8E\xBB",
"\xEA\xAE\x8C" => "\xE1\x8E\xBC",
"\xEA\xAE\x8D" => "\xE1\x8E\xBD",
"\xEA\xAE\x8E" => "\xE1\x8E\xBE",
"\xEA\xAE\x8F" => "\xE1\x8E\xBF",
"\xEA\xAE\x90" => "\xE1\x8F\x80",
"\xEA\xAE\x91" => "\xE1\x8F\x81",
"\xEA\xAE\x92" => "\xE1\x8F\x82",
"\xEA\xAE\x93" => "\xE1\x8F\x83",
"\xEA\xAE\x94" => "\xE1\x8F\x84",
"\xEA\xAE\x95" => "\xE1\x8F\x85",
"\xEA\xAE\x96" => "\xE1\x8F\x86",
"\xEA\xAE\x97" => "\xE1\x8F\x87",
"\xEA\xAE\x98" => "\xE1\x8F\x88",
"\xEA\xAE\x99" => "\xE1\x8F\x89",
"\xEA\xAE\x9A" => "\xE1\x8F\x8A",
"\xEA\xAE\x9B" => "\xE1\x8F\x8B",
"\xEA\xAE\x9C" => "\xE1\x8F\x8C",
"\xEA\xAE\x9D" => "\xE1\x8F\x8D",
"\xEA\xAE\x9E" => "\xE1\x8F\x8E",
"\xEA\xAE\x9F" => "\xE1\x8F\x8F",
"\xEA\xAE\xA0" => "\xE1\x8F\x90",
"\xEA\xAE\xA1" => "\xE1\x8F\x91",
"\xEA\xAE\xA2" => "\xE1\x8F\x92",
"\xEA\xAE\xA3" => "\xE1\x8F\x93",
"\xEA\xAE\xA4" => "\xE1\x8F\x94",
"\xEA\xAE\xA5" => "\xE1\x8F\x95",
"\xEA\xAE\xA6" => "\xE1\x8F\x96",
"\xEA\xAE\xA7" => "\xE1\x8F\x97",
"\xEA\xAE\xA8" => "\xE1\x8F\x98",
"\xEA\xAE\xA9" => "\xE1\x8F\x99",
"\xEA\xAE\xAA" => "\xE1\x8F\x9A",
"\xEA\xAE\xAB" => "\xE1\x8F\x9B",
"\xEA\xAE\xAC" => "\xE1\x8F\x9C",
"\xEA\xAE\xAD" => "\xE1\x8F\x9D",
"\xEA\xAE\xAE" => "\xE1\x8F\x9E",
"\xEA\xAE\xAF" => "\xE1\x8F\x9F",
"\xEA\xAE\xB0" => "\xE1\x8F\xA0",
"\xEA\xAE\xB1" => "\xE1\x8F\xA1",
"\xEA\xAE\xB2" => "\xE1\x8F\xA2",
"\xEA\xAE\xB3" => "\xE1\x8F\xA3",
"\xEA\xAE\xB4" => "\xE1\x8F\xA4",
"\xEA\xAE\xB5" => "\xE1\x8F\xA5",
"\xEA\xAE\xB6" => "\xE1\x8F\xA6",
"\xEA\xAE\xB7" => "\xE1\x8F\xA7",
"\xEA\xAE\xB8" => "\xE1\x8F\xA8",
"\xEA\xAE\xB9" => "\xE1\x8F\xA9",
"\xEA\xAE\xBA" => "\xE1\x8F\xAA",
"\xEA\xAE\xBB" => "\xE1\x8F\xAB",
"\xEA\xAE\xBC" => "\xE1\x8F\xAC",
"\xEA\xAE\xBD" => "\xE1\x8F\xAD",
"\xEA\xAE\xBE" => "\xE1\x8F\xAE",
"\xEA\xAE\xBF" => "\xE1\x8F\xAF",
"\xEF\xBC\xA1" => "\xEF\xBD\x81",
"\xEF\xBC\xA2" => "\xEF\xBD\x82",
"\xEF\xBC\xA3" => "\xEF\xBD\x83",
"\xEF\xBC\xA4" => "\xEF\xBD\x84",
"\xEF\xBC\xA5" => "\xEF\xBD\x85",
"\xEF\xBC\xA6" => "\xEF\xBD\x86",
"\xEF\xBC\xA7" => "\xEF\xBD\x87",
"\xEF\xBC\xA8" => "\xEF\xBD\x88",
"\xEF\xBC\xA9" => "\xEF\xBD\x89",
"\xEF\xBC\xAA" => "\xEF\xBD\x8A",
"\xEF\xBC\xAB" => "\xEF\xBD\x8B",
"\xEF\xBC\xAC" => "\xEF\xBD\x8C",
"\xEF\xBC\xAD" => "\xEF\xBD\x8D",
"\xEF\xBC\xAE" => "\xEF\xBD\x8E",
"\xEF\xBC\xAF" => "\xEF\xBD\x8F",
"\xEF\xBC\xB0" => "\xEF\xBD\x90",
"\xEF\xBC\xB1" => "\xEF\xBD\x91",
"\xEF\xBC\xB2" => "\xEF\xBD\x92",
"\xEF\xBC\xB3" => "\xEF\xBD\x93",
"\xEF\xBC\xB4" => "\xEF\xBD\x94",
"\xEF\xBC\xB5" => "\xEF\xBD\x95",
"\xEF\xBC\xB6" => "\xEF\xBD\x96",
"\xEF\xBC\xB7" => "\xEF\xBD\x97",
"\xEF\xBC\xB8" => "\xEF\xBD\x98",
"\xEF\xBC\xB9" => "\xEF\xBD\x99",
"\xEF\xBC\xBA" => "\xEF\xBD\x9A",
"\xF0\x90\x90\x80" => "\xF0\x90\x90\xA8",
"\xF0\x90\x90\x81" => "\xF0\x90\x90\xA9",
"\xF0\x90\x90\x82" => "\xF0\x90\x90\xAA",
"\xF0\x90\x90\x83" => "\xF0\x90\x90\xAB",
"\xF0\x90\x90\x84" => "\xF0\x90\x90\xAC",
"\xF0\x90\x90\x85" => "\xF0\x90\x90\xAD",
"\xF0\x90\x90\x86" => "\xF0\x90\x90\xAE",
"\xF0\x90\x90\x87" => "\xF0\x90\x90\xAF",
"\xF0\x90\x90\x88" => "\xF0\x90\x90\xB0",
"\xF0\x90\x90\x89" => "\xF0\x90\x90\xB1",
"\xF0\x90\x90\x8A" => "\xF0\x90\x90\xB2",
"\xF0\x90\x90\x8B" => "\xF0\x90\x90\xB3",
"\xF0\x90\x90\x8C" => "\xF0\x90\x90\xB4",
"\xF0\x90\x90\x8D" => "\xF0\x90\x90\xB5",
"\xF0\x90\x90\x8E" => "\xF0\x90\x90\xB6",
"\xF0\x90\x90\x8F" => "\xF0\x90\x90\xB7",
"\xF0\x90\x90\x90" => "\xF0\x90\x90\xB8",
"\xF0\x90\x90\x91" => "\xF0\x90\x90\xB9",
"\xF0\x90\x90\x92" => "\xF0\x90\x90\xBA",
"\xF0\x90\x90\x93" => "\xF0\x90\x90\xBB",
"\xF0\x90\x90\x94" => "\xF0\x90\x90\xBC",
"\xF0\x90\x90\x95" => "\xF0\x90\x90\xBD",
"\xF0\x90\x90\x96" => "\xF0\x90\x90\xBE",
"\xF0\x90\x90\x97" => "\xF0\x90\x90\xBF",
"\xF0\x90\x90\x98" => "\xF0\x90\x91\x80",
"\xF0\x90\x90\x99" => "\xF0\x90\x91\x81",
"\xF0\x90\x90\x9A" => "\xF0\x90\x91\x82",
"\xF0\x90\x90\x9B" => "\xF0\x90\x91\x83",
"\xF0\x90\x90\x9C" => "\xF0\x90\x91\x84",
"\xF0\x90\x90\x9D" => "\xF0\x90\x91\x85",
"\xF0\x90\x90\x9E" => "\xF0\x90\x91\x86",
"\xF0\x90\x90\x9F" => "\xF0\x90\x91\x87",
"\xF0\x90\x90\xA0" => "\xF0\x90\x91\x88",
"\xF0\x90\x90\xA1" => "\xF0\x90\x91\x89",
"\xF0\x90\x90\xA2" => "\xF0\x90\x91\x8A",
"\xF0\x90\x90\xA3" => "\xF0\x90\x91\x8B",
"\xF0\x90\x90\xA4" => "\xF0\x90\x91\x8C",
"\xF0\x90\x90\xA5" => "\xF0\x90\x91\x8D",
"\xF0\x90\x90\xA6" => "\xF0\x90\x91\x8E",
"\xF0\x90\x90\xA7" => "\xF0\x90\x91\x8F",
"\xF0\x90\x92\xB0" => "\xF0\x90\x93\x98",
"\xF0\x90\x92\xB1" => "\xF0\x90\x93\x99",
"\xF0\x90\x92\xB2" => "\xF0\x90\x93\x9A",
"\xF0\x90\x92\xB3" => "\xF0\x90\x93\x9B",
"\xF0\x90\x92\xB4" => "\xF0\x90\x93\x9C",
"\xF0\x90\x92\xB5" => "\xF0\x90\x93\x9D",
"\xF0\x90\x92\xB6" => "\xF0\x90\x93\x9E",
"\xF0\x90\x92\xB7" => "\xF0\x90\x93\x9F",
"\xF0\x90\x92\xB8" => "\xF0\x90\x93\xA0",
"\xF0\x90\x92\xB9" => "\xF0\x90\x93\xA1",
"\xF0\x90\x92\xBA" => "\xF0\x90\x93\xA2",
"\xF0\x90\x92\xBB" => "\xF0\x90\x93\xA3",
"\xF0\x90\x92\xBC" => "\xF0\x90\x93\xA4",
"\xF0\x90\x92\xBD" => "\xF0\x90\x93\xA5",
"\xF0\x90\x92\xBE" => "\xF0\x90\x93\xA6",
"\xF0\x90\x92\xBF" => "\xF0\x90\x93\xA7",
"\xF0\x90\x93\x80" => "\xF0\x90\x93\xA8",
"\xF0\x90\x93\x81" => "\xF0\x90\x93\xA9",
"\xF0\x90\x93\x82" => "\xF0\x90\x93\xAA",
"\xF0\x90\x93\x83" => "\xF0\x90\x93\xAB",
"\xF0\x90\x93\x84" => "\xF0\x90\x93\xAC",
"\xF0\x90\x93\x85" => "\xF0\x90\x93\xAD",
"\xF0\x90\x93\x86" => "\xF0\x90\x93\xAE",
"\xF0\x90\x93\x87" => "\xF0\x90\x93\xAF",
"\xF0\x90\x93\x88" => "\xF0\x90\x93\xB0",
"\xF0\x90\x93\x89" => "\xF0\x90\x93\xB1",
"\xF0\x90\x93\x8A" => "\xF0\x90\x93\xB2",
"\xF0\x90\x93\x8B" => "\xF0\x90\x93\xB3",
"\xF0\x90\x93\x8C" => "\xF0\x90\x93\xB4",
"\xF0\x90\x93\x8D" => "\xF0\x90\x93\xB5",
"\xF0\x90\x93\x8E" => "\xF0\x90\x93\xB6",
"\xF0\x90\x93\x8F" => "\xF0\x90\x93\xB7",
"\xF0\x90\x93\x90" => "\xF0\x90\x93\xB8",
"\xF0\x90\x93\x91" => "\xF0\x90\x93\xB9",
"\xF0\x90\x93\x92" => "\xF0\x90\x93\xBA",
"\xF0\x90\x93\x93" => "\xF0\x90\x93\xBB",
"\xF0\x90\x95\xB0" => "\xF0\x90\x96\x97",
"\xF0\x90\x95\xB1" => "\xF0\x90\x96\x98",
"\xF0\x90\x95\xB2" => "\xF0\x90\x96\x99",
"\xF0\x90\x95\xB3" => "\xF0\x90\x96\x9A",
"\xF0\x90\x95\xB4" => "\xF0\x90\x96\x9B",
"\xF0\x90\x95\xB5" => "\xF0\x90\x96\x9C",
"\xF0\x90\x95\xB6" => "\xF0\x90\x96\x9D",
"\xF0\x90\x95\xB7" => "\xF0\x90\x96\x9E",
"\xF0\x90\x95\xB8" => "\xF0\x90\x96\x9F",
"\xF0\x90\x95\xB9" => "\xF0\x90\x96\xA0",
"\xF0\x90\x95\xBA" => "\xF0\x90\x96\xA1",
"\xF0\x90\x95\xBC" => "\xF0\x90\x96\xA3",
"\xF0\x90\x95\xBD" => "\xF0\x90\x96\xA4",
"\xF0\x90\x95\xBE" => "\xF0\x90\x96\xA5",
"\xF0\x90\x95\xBF" => "\xF0\x90\x96\xA6",
"\xF0\x90\x96\x80" => "\xF0\x90\x96\xA7",
"\xF0\x90\x96\x81" => "\xF0\x90\x96\xA8",
"\xF0\x90\x96\x82" => "\xF0\x90\x96\xA9",
"\xF0\x90\x96\x83" => "\xF0\x90\x96\xAA",
"\xF0\x90\x96\x84" => "\xF0\x90\x96\xAB",
"\xF0\x90\x96\x85" => "\xF0\x90\x96\xAC",
"\xF0\x90\x96\x86" => "\xF0\x90\x96\xAD",
"\xF0\x90\x96\x87" => "\xF0\x90\x96\xAE",
"\xF0\x90\x96\x88" => "\xF0\x90\x96\xAF",
"\xF0\x90\x96\x89" => "\xF0\x90\x96\xB0",
"\xF0\x90\x96\x8A" => "\xF0\x90\x96\xB1",
"\xF0\x90\x96\x8C" => "\xF0\x90\x96\xB3",
"\xF0\x90\x96\x8D" => "\xF0\x90\x96\xB4",
"\xF0\x90\x96\x8E" => "\xF0\x90\x96\xB5",
"\xF0\x90\x96\x8F" => "\xF0\x90\x96\xB6",
"\xF0\x90\x96\x90" => "\xF0\x90\x96\xB7",
"\xF0\x90\x96\x91" => "\xF0\x90\x96\xB8",
"\xF0\x90\x96\x92" => "\xF0\x90\x96\xB9",
"\xF0\x90\x96\x94" => "\xF0\x90\x96\xBB",
"\xF0\x90\x96\x95" => "\xF0\x90\x96\xBC",
"\xF0\x90\xB2\x80" => "\xF0\x90\xB3\x80",
"\xF0\x90\xB2\x81" => "\xF0\x90\xB3\x81",
"\xF0\x90\xB2\x82" => "\xF0\x90\xB3\x82",
"\xF0\x90\xB2\x83" => "\xF0\x90\xB3\x83",
"\xF0\x90\xB2\x84" => "\xF0\x90\xB3\x84",
"\xF0\x90\xB2\x85" => "\xF0\x90\xB3\x85",
"\xF0\x90\xB2\x86" => "\xF0\x90\xB3\x86",
"\xF0\x90\xB2\x87" => "\xF0\x90\xB3\x87",
"\xF0\x90\xB2\x88" => "\xF0\x90\xB3\x88",
"\xF0\x90\xB2\x89" => "\xF0\x90\xB3\x89",
"\xF0\x90\xB2\x8A" => "\xF0\x90\xB3\x8A",
"\xF0\x90\xB2\x8B" => "\xF0\x90\xB3\x8B",
"\xF0\x90\xB2\x8C" => "\xF0\x90\xB3\x8C",
"\xF0\x90\xB2\x8D" => "\xF0\x90\xB3\x8D",
"\xF0\x90\xB2\x8E" => "\xF0\x90\xB3\x8E",
"\xF0\x90\xB2\x8F" => "\xF0\x90\xB3\x8F",
"\xF0\x90\xB2\x90" => "\xF0\x90\xB3\x90",
"\xF0\x90\xB2\x91" => "\xF0\x90\xB3\x91",
"\xF0\x90\xB2\x92" => "\xF0\x90\xB3\x92",
"\xF0\x90\xB2\x93" => "\xF0\x90\xB3\x93",
"\xF0\x90\xB2\x94" => "\xF0\x90\xB3\x94",
"\xF0\x90\xB2\x95" => "\xF0\x90\xB3\x95",
"\xF0\x90\xB2\x96" => "\xF0\x90\xB3\x96",
"\xF0\x90\xB2\x97" => "\xF0\x90\xB3\x97",
"\xF0\x90\xB2\x98" => "\xF0\x90\xB3\x98",
"\xF0\x90\xB2\x99" => "\xF0\x90\xB3\x99",
"\xF0\x90\xB2\x9A" => "\xF0\x90\xB3\x9A",
"\xF0\x90\xB2\x9B" => "\xF0\x90\xB3\x9B",
"\xF0\x90\xB2\x9C" => "\xF0\x90\xB3\x9C",
"\xF0\x90\xB2\x9D" => "\xF0\x90\xB3\x9D",
"\xF0\x90\xB2\x9E" => "\xF0\x90\xB3\x9E",
"\xF0\x90\xB2\x9F" => "\xF0\x90\xB3\x9F",
"\xF0\x90\xB2\xA0" => "\xF0\x90\xB3\xA0",
"\xF0\x90\xB2\xA1" => "\xF0\x90\xB3\xA1",
"\xF0\x90\xB2\xA2" => "\xF0\x90\xB3\xA2",
"\xF0\x90\xB2\xA3" => "\xF0\x90\xB3\xA3",
"\xF0\x90\xB2\xA4" => "\xF0\x90\xB3\xA4",
"\xF0\x90\xB2\xA5" => "\xF0\x90\xB3\xA5",
"\xF0\x90\xB2\xA6" => "\xF0\x90\xB3\xA6",
"\xF0\x90\xB2\xA7" => "\xF0\x90\xB3\xA7",
"\xF0\x90\xB2\xA8" => "\xF0\x90\xB3\xA8",
"\xF0\x90\xB2\xA9" => "\xF0\x90\xB3\xA9",
"\xF0\x90\xB2\xAA" => "\xF0\x90\xB3\xAA",
"\xF0\x90\xB2\xAB" => "\xF0\x90\xB3\xAB",
"\xF0\x90\xB2\xAC" => "\xF0\x90\xB3\xAC",
"\xF0\x90\xB2\xAD" => "\xF0\x90\xB3\xAD",
"\xF0\x90\xB2\xAE" => "\xF0\x90\xB3\xAE",
"\xF0\x90\xB2\xAF" => "\xF0\x90\xB3\xAF",
"\xF0\x90\xB2\xB0" => "\xF0\x90\xB3\xB0",
"\xF0\x90\xB2\xB1" => "\xF0\x90\xB3\xB1",
"\xF0\x90\xB2\xB2" => "\xF0\x90\xB3\xB2",
"\xF0\x91\xA2\xA0" => "\xF0\x91\xA3\x80",
"\xF0\x91\xA2\xA1" => "\xF0\x91\xA3\x81",
"\xF0\x91\xA2\xA2" => "\xF0\x91\xA3\x82",
"\xF0\x91\xA2\xA3" => "\xF0\x91\xA3\x83",
"\xF0\x91\xA2\xA4" => "\xF0\x91\xA3\x84",
"\xF0\x91\xA2\xA5" => "\xF0\x91\xA3\x85",
"\xF0\x91\xA2\xA6" => "\xF0\x91\xA3\x86",
"\xF0\x91\xA2\xA7" => "\xF0\x91\xA3\x87",
"\xF0\x91\xA2\xA8" => "\xF0\x91\xA3\x88",
"\xF0\x91\xA2\xA9" => "\xF0\x91\xA3\x89",
"\xF0\x91\xA2\xAA" => "\xF0\x91\xA3\x8A",
"\xF0\x91\xA2\xAB" => "\xF0\x91\xA3\x8B",
"\xF0\x91\xA2\xAC" => "\xF0\x91\xA3\x8C",
"\xF0\x91\xA2\xAD" => "\xF0\x91\xA3\x8D",
"\xF0\x91\xA2\xAE" => "\xF0\x91\xA3\x8E",
"\xF0\x91\xA2\xAF" => "\xF0\x91\xA3\x8F",
"\xF0\x91\xA2\xB0" => "\xF0\x91\xA3\x90",
"\xF0\x91\xA2\xB1" => "\xF0\x91\xA3\x91",
"\xF0\x91\xA2\xB2" => "\xF0\x91\xA3\x92",
"\xF0\x91\xA2\xB3" => "\xF0\x91\xA3\x93",
"\xF0\x91\xA2\xB4" => "\xF0\x91\xA3\x94",
"\xF0\x91\xA2\xB5" => "\xF0\x91\xA3\x95",
"\xF0\x91\xA2\xB6" => "\xF0\x91\xA3\x96",
"\xF0\x91\xA2\xB7" => "\xF0\x91\xA3\x97",
"\xF0\x91\xA2\xB8" => "\xF0\x91\xA3\x98",
"\xF0\x91\xA2\xB9" => "\xF0\x91\xA3\x99",
"\xF0\x91\xA2\xBA" => "\xF0\x91\xA3\x9A",
"\xF0\x91\xA2\xBB" => "\xF0\x91\xA3\x9B",
"\xF0\x91\xA2\xBC" => "\xF0\x91\xA3\x9C",
"\xF0\x91\xA2\xBD" => "\xF0\x91\xA3\x9D",
"\xF0\x91\xA2\xBE" => "\xF0\x91\xA3\x9E",
"\xF0\x91\xA2\xBF" => "\xF0\x91\xA3\x9F",
"\xF0\x96\xB9\x80" => "\xF0\x96\xB9\xA0",
"\xF0\x96\xB9\x81" => "\xF0\x96\xB9\xA1",
"\xF0\x96\xB9\x82" => "\xF0\x96\xB9\xA2",
"\xF0\x96\xB9\x83" => "\xF0\x96\xB9\xA3",
"\xF0\x96\xB9\x84" => "\xF0\x96\xB9\xA4",
"\xF0\x96\xB9\x85" => "\xF0\x96\xB9\xA5",
"\xF0\x96\xB9\x86" => "\xF0\x96\xB9\xA6",
"\xF0\x96\xB9\x87" => "\xF0\x96\xB9\xA7",
"\xF0\x96\xB9\x88" => "\xF0\x96\xB9\xA8",
"\xF0\x96\xB9\x89" => "\xF0\x96\xB9\xA9",
"\xF0\x96\xB9\x8A" => "\xF0\x96\xB9\xAA",
"\xF0\x96\xB9\x8B" => "\xF0\x96\xB9\xAB",
"\xF0\x96\xB9\x8C" => "\xF0\x96\xB9\xAC",
"\xF0\x96\xB9\x8D" => "\xF0\x96\xB9\xAD",
"\xF0\x96\xB9\x8E" => "\xF0\x96\xB9\xAE",
"\xF0\x96\xB9\x8F" => "\xF0\x96\xB9\xAF",
"\xF0\x96\xB9\x90" => "\xF0\x96\xB9\xB0",
"\xF0\x96\xB9\x91" => "\xF0\x96\xB9\xB1",
"\xF0\x96\xB9\x92" => "\xF0\x96\xB9\xB2",
"\xF0\x96\xB9\x93" => "\xF0\x96\xB9\xB3",
"\xF0\x96\xB9\x94" => "\xF0\x96\xB9\xB4",
"\xF0\x96\xB9\x95" => "\xF0\x96\xB9\xB5",
"\xF0\x96\xB9\x96" => "\xF0\x96\xB9\xB6",
"\xF0\x96\xB9\x97" => "\xF0\x96\xB9\xB7",
"\xF0\x96\xB9\x98" => "\xF0\x96\xB9\xB8",
"\xF0\x96\xB9\x99" => "\xF0\x96\xB9\xB9",
"\xF0\x96\xB9\x9A" => "\xF0\x96\xB9\xBA",
"\xF0\x96\xB9\x9B" => "\xF0\x96\xB9\xBB",
"\xF0\x96\xB9\x9C" => "\xF0\x96\xB9\xBC",
"\xF0\x96\xB9\x9D" => "\xF0\x96\xB9\xBD",
"\xF0\x96\xB9\x9E" => "\xF0\x96\xB9\xBE",
"\xF0\x96\xB9\x9F" => "\xF0\x96\xB9\xBF",
"\xF0\x9E\xA4\x80" => "\xF0\x9E\xA4\xA2",
"\xF0\x9E\xA4\x81" => "\xF0\x9E\xA4\xA3",
"\xF0\x9E\xA4\x82" => "\xF0\x9E\xA4\xA4",
"\xF0\x9E\xA4\x83" => "\xF0\x9E\xA4\xA5",
"\xF0\x9E\xA4\x84" => "\xF0\x9E\xA4\xA6",
"\xF0\x9E\xA4\x85" => "\xF0\x9E\xA4\xA7",
"\xF0\x9E\xA4\x86" => "\xF0\x9E\xA4\xA8",
"\xF0\x9E\xA4\x87" => "\xF0\x9E\xA4\xA9",
"\xF0\x9E\xA4\x88" => "\xF0\x9E\xA4\xAA",
"\xF0\x9E\xA4\x89" => "\xF0\x9E\xA4\xAB",
"\xF0\x9E\xA4\x8A" => "\xF0\x9E\xA4\xAC",
"\xF0\x9E\xA4\x8B" => "\xF0\x9E\xA4\xAD",
"\xF0\x9E\xA4\x8C" => "\xF0\x9E\xA4\xAE",
"\xF0\x9E\xA4\x8D" => "\xF0\x9E\xA4\xAF",
"\xF0\x9E\xA4\x8E" => "\xF0\x9E\xA4\xB0",
"\xF0\x9E\xA4\x8F" => "\xF0\x9E\xA4\xB1",
"\xF0\x9E\xA4\x90" => "\xF0\x9E\xA4\xB2",
"\xF0\x9E\xA4\x91" => "\xF0\x9E\xA4\xB3",
"\xF0\x9E\xA4\x92" => "\xF0\x9E\xA4\xB4",
"\xF0\x9E\xA4\x93" => "\xF0\x9E\xA4\xB5",
"\xF0\x9E\xA4\x94" => "\xF0\x9E\xA4\xB6",
"\xF0\x9E\xA4\x95" => "\xF0\x9E\xA4\xB7",
"\xF0\x9E\xA4\x96" => "\xF0\x9E\xA4\xB8",
"\xF0\x9E\xA4\x97" => "\xF0\x9E\xA4\xB9",
"\xF0\x9E\xA4\x98" => "\xF0\x9E\xA4\xBA",
"\xF0\x9E\xA4\x99" => "\xF0\x9E\xA4\xBB",
"\xF0\x9E\xA4\x9A" => "\xF0\x9E\xA4\xBC",
"\xF0\x9E\xA4\x9B" => "\xF0\x9E\xA4\xBD",
"\xF0\x9E\xA4\x9C" => "\xF0\x9E\xA4\xBE",
"\xF0\x9E\xA4\x9D" => "\xF0\x9E\xA4\xBF",
"\xF0\x9E\xA4\x9E" => "\xF0\x9E\xA5\x80",
"\xF0\x9E\xA4\x9F" => "\xF0\x9E\xA5\x81",
"\xF0\x9E\xA4\xA0" => "\xF0\x9E\xA5\x82",
"\xF0\x9E\xA4\xA1" => "\xF0\x9E\xA5\x83",
);
}

/**
* Helper function for utf8_casefold.
*
* Developers: Do not update the data in this function manually. Instead,
* run "php -f other/update_unicode_data.php" on the command line.
*
* @return array Casefolding maps.
*/
function utf8_casefold_maps()

./Sources/Unicode/CaseLower.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
function utf8_strtolower_maps()
Replace With: Select
function utf8_strtolower_simple_maps()
Find: Select
"\xF0\x9E\xA4\xA0" => "\xF0\x9E\xA5\x82",
"\xF0\x9E\xA4\xA1" => "\xF0\x9E\xA5\x83",
);
}

Replace With: Select
"\xF0\x9E\xA4\xA0" => "\xF0\x9E\xA5\x82",
"\xF0\x9E\xA4\xA1" => "\xF0\x9E\xA5\x83",
);
}

/**
* Helper function for utf8_strtolower.
*
* Developers: Do not update the data in this function manually. Instead,
* run "php -f other/update_unicode_data.php" on the command line.
*
* @return array Uppercase to lowercase maps.
*/
function utf8_strtolower_maps()
{
return array(
"\x41" => "\x61",
"\x42" => "\x62",
"\x43" => "\x63",
"\x44" => "\x64",
"\x45" => "\x65",
"\x46" => "\x66",
"\x47" => "\x67",
"\x48" => "\x68",
"\x49" => "\x69",
"\x4A" => "\x6A",
"\x4B" => "\x6B",
"\x4C" => "\x6C",
"\x4D" => "\x6D",
"\x4E" => "\x6E",
"\x4F" => "\x6F",
"\x50" => "\x70",
"\x51" => "\x71",
"\x52" => "\x72",
"\x53" => "\x73",
"\x54" => "\x74",
"\x55" => "\x75",
"\x56" => "\x76",
"\x57" => "\x77",
"\x58" => "\x78",
"\x59" => "\x79",
"\x5A" => "\x7A",
"\xC3\x80" => "\xC3\xA0",
"\xC3\x81" => "\xC3\xA1",
"\xC3\x82" => "\xC3\xA2",
"\xC3\x83" => "\xC3\xA3",
"\xC3\x84" => "\xC3\xA4",
"\xC3\x85" => "\xC3\xA5",
"\xC3\x86" => "\xC3\xA6",
"\xC3\x87" => "\xC3\xA7",
"\xC3\x88" => "\xC3\xA8",
"\xC3\x89" => "\xC3\xA9",
"\xC3\x8A" => "\xC3\xAA",
"\xC3\x8B" => "\xC3\xAB",
"\xC3\x8C" => "\xC3\xAC",
"\xC3\x8D" => "\xC3\xAD",
"\xC3\x8E" => "\xC3\xAE",
"\xC3\x8F" => "\xC3\xAF",
"\xC3\x90" => "\xC3\xB0",
"\xC3\x91" => "\xC3\xB1",
"\xC3\x92" => "\xC3\xB2",
"\xC3\x93" => "\xC3\xB3",
"\xC3\x94" => "\xC3\xB4",
"\xC3\x95" => "\xC3\xB5",
"\xC3\x96" => "\xC3\xB6",
"\xC3\x98" => "\xC3\xB8",
"\xC3\x99" => "\xC3\xB9",
"\xC3\x9A" => "\xC3\xBA",
"\xC3\x9B" => "\xC3\xBB",
"\xC3\x9C" => "\xC3\xBC",
"\xC3\x9D" => "\xC3\xBD",
"\xC3\x9E" => "\xC3\xBE",
"\xC3\x9F" => "\xC3\x9F",
"\xC4\x80" => "\xC4\x81",
"\xC4\x82" => "\xC4\x83",
"\xC4\x84" => "\xC4\x85",
"\xC4\x86" => "\xC4\x87",
"\xC4\x88" => "\xC4\x89",
"\xC4\x8A" => "\xC4\x8B",
"\xC4\x8C" => "\xC4\x8D",
"\xC4\x8E" => "\xC4\x8F",
"\xC4\x90" => "\xC4\x91",
"\xC4\x92" => "\xC4\x93",
"\xC4\x94" => "\xC4\x95",
"\xC4\x96" => "\xC4\x97",
"\xC4\x98" => "\xC4\x99",
"\xC4\x9A" => "\xC4\x9B",
"\xC4\x9C" => "\xC4\x9D",
"\xC4\x9E" => "\xC4\x9F",
"\xC4\xA0" => "\xC4\xA1",
"\xC4\xA2" => "\xC4\xA3",
"\xC4\xA4" => "\xC4\xA5",
"\xC4\xA6" => "\xC4\xA7",
"\xC4\xA8" => "\xC4\xA9",
"\xC4\xAA" => "\xC4\xAB",
"\xC4\xAC" => "\xC4\xAD",
"\xC4\xAE" => "\xC4\xAF",
"\xC4\xB0" => "\x69\xCC\x87",
"\xC4\xB2" => "\xC4\xB3",
"\xC4\xB4" => "\xC4\xB5",
"\xC4\xB6" => "\xC4\xB7",
"\xC4\xB9" => "\xC4\xBA",
"\xC4\xBB" => "\xC4\xBC",
"\xC4\xBD" => "\xC4\xBE",
"\xC4\xBF" => "\xC5\x80",
"\xC5\x81" => "\xC5\x82",
"\xC5\x83" => "\xC5\x84",
"\xC5\x85" => "\xC5\x86",
"\xC5\x87" => "\xC5\x88",
"\xC5\x89" => "\xC5\x89",
"\xC5\x8A" => "\xC5\x8B",
"\xC5\x8C" => "\xC5\x8D",
"\xC5\x8E" => "\xC5\x8F",
"\xC5\x90" => "\xC5\x91",
"\xC5\x92" => "\xC5\x93",
"\xC5\x94" => "\xC5\x95",
"\xC5\x96" => "\xC5\x97",
"\xC5\x98" => "\xC5\x99",
"\xC5\x9A" => "\xC5\x9B",
"\xC5\x9C" => "\xC5\x9D",
"\xC5\x9E" => "\xC5\x9F",
"\xC5\xA0" => "\xC5\xA1",
"\xC5\xA2" => "\xC5\xA3",
"\xC5\xA4" => "\xC5\xA5",
"\xC5\xA6" => "\xC5\xA7",
"\xC5\xA8" => "\xC5\xA9",
"\xC5\xAA" => "\xC5\xAB",
"\xC5\xAC" => "\xC5\xAD",
"\xC5\xAE" => "\xC5\xAF",
"\xC5\xB0" => "\xC5\xB1",
"\xC5\xB2" => "\xC5\xB3",
"\xC5\xB4" => "\xC5\xB5",
"\xC5\xB6" => "\xC5\xB7",
"\xC5\xB8" => "\xC3\xBF",
"\xC5\xB9" => "\xC5\xBA",
"\xC5\xBB" => "\xC5\xBC",
"\xC5\xBD" => "\xC5\xBE",
"\xC6\x81" => "\xC9\x93",
"\xC6\x82" => "\xC6\x83",
"\xC6\x84" => "\xC6\x85",
"\xC6\x86" => "\xC9\x94",
"\xC6\x87" => "\xC6\x88",
"\xC6\x89" => "\xC9\x96",
"\xC6\x8A" => "\xC9\x97",
"\xC6\x8B" => "\xC6\x8C",
"\xC6\x8E" => "\xC7\x9D",
"\xC6\x8F" => "\xC9\x99",
"\xC6\x90" => "\xC9\x9B",
"\xC6\x91" => "\xC6\x92",
"\xC6\x93" => "\xC9\xA0",
"\xC6\x94" => "\xC9\xA3",
"\xC6\x96" => "\xC9\xA9",
"\xC6\x97" => "\xC9\xA8",
"\xC6\x98" => "\xC6\x99",
"\xC6\x9C" => "\xC9\xAF",
"\xC6\x9D" => "\xC9\xB2",
"\xC6\x9F" => "\xC9\xB5",
"\xC6\xA0" => "\xC6\xA1",
"\xC6\xA2" => "\xC6\xA3",
"\xC6\xA4" => "\xC6\xA5",
"\xC6\xA6" => "\xCA\x80",
"\xC6\xA7" => "\xC6\xA8",
"\xC6\xA9" => "\xCA\x83",
"\xC6\xAC" => "\xC6\xAD",
"\xC6\xAE" => "\xCA\x88",
"\xC6\xAF" => "\xC6\xB0",
"\xC6\xB1" => "\xCA\x8A",
"\xC6\xB2" => "\xCA\x8B",
"\xC6\xB3" => "\xC6\xB4",
"\xC6\xB5" => "\xC6\xB6",
"\xC6\xB7" => "\xCA\x92",
"\xC6\xB8" => "\xC6\xB9",
"\xC6\xBC" => "\xC6\xBD",
"\xC7\x84" => "\xC7\x86",
"\xC7\x85" => "\xC7\x86",
"\xC7\x87" => "\xC7\x89",
"\xC7\x88" => "\xC7\x89",
"\xC7\x8A" => "\xC7\x8C",
"\xC7\x8B" => "\xC7\x8C",
"\xC7\x8D" => "\xC7\x8E",
"\xC7\x8F" => "\xC7\x90",
"\xC7\x91" => "\xC7\x92",
"\xC7\x93" => "\xC7\x94",
"\xC7\x95" => "\xC7\x96",
"\xC7\x97" => "\xC7\x98",
"\xC7\x99" => "\xC7\x9A",
"\xC7\x9B" => "\xC7\x9C",
"\xC7\x9E" => "\xC7\x9F",
"\xC7\xA0" => "\xC7\xA1",
"\xC7\xA2" => "\xC7\xA3",
"\xC7\xA4" => "\xC7\xA5",
"\xC7\xA6" => "\xC7\xA7",
"\xC7\xA8" => "\xC7\xA9",
"\xC7\xAA" => "\xC7\xAB",
"\xC7\xAC" => "\xC7\xAD",
"\xC7\xAE" => "\xC7\xAF",
"\xC7\xB0" => "\xC7\xB0",
"\xC7\xB1" => "\xC7\xB3",
"\xC7\xB2" => "\xC7\xB3",
"\xC7\xB4" => "\xC7\xB5",
"\xC7\xB6" => "\xC6\x95",
"\xC7\xB7" => "\xC6\xBF",
"\xC7\xB8" => "\xC7\xB9",
"\xC7\xBA" => "\xC7\xBB",
"\xC7\xBC" => "\xC7\xBD",
"\xC7\xBE" => "\xC7\xBF",
"\xC8\x80" => "\xC8\x81",
"\xC8\x82" => "\xC8\x83",
"\xC8\x84" => "\xC8\x85",
"\xC8\x86" => "\xC8\x87",
"\xC8\x88" => "\xC8\x89",
"\xC8\x8A" => "\xC8\x8B",
"\xC8\x8C" => "\xC8\x8D",
"\xC8\x8E" => "\xC8\x8F",
"\xC8\x90" => "\xC8\x91",
"\xC8\x92" => "\xC8\x93",
"\xC8\x94" => "\xC8\x95",
"\xC8\x96" => "\xC8\x97",
"\xC8\x98" => "\xC8\x99",
"\xC8\x9A" => "\xC8\x9B",
"\xC8\x9C" => "\xC8\x9D",
"\xC8\x9E" => "\xC8\x9F",
"\xC8\xA0" => "\xC6\x9E",
"\xC8\xA2" => "\xC8\xA3",
"\xC8\xA4" => "\xC8\xA5",
"\xC8\xA6" => "\xC8\xA7",
"\xC8\xA8" => "\xC8\xA9",
"\xC8\xAA" => "\xC8\xAB",
"\xC8\xAC" => "\xC8\xAD",
"\xC8\xAE" => "\xC8\xAF",
"\xC8\xB0" => "\xC8\xB1",
"\xC8\xB2" => "\xC8\xB3",
"\xC8\xBA" => "\xE2\xB1\xA5",
"\xC8\xBB" => "\xC8\xBC",
"\xC8\xBD" => "\xC6\x9A",
"\xC8\xBE" => "\xE2\xB1\xA6",
"\xC9\x81" => "\xC9\x82",
"\xC9\x83" => "\xC6\x80",
"\xC9\x84" => "\xCA\x89",
"\xC9\x85" => "\xCA\x8C",
"\xC9\x86" => "\xC9\x87",
"\xC9\x88" => "\xC9\x89",
"\xC9\x8A" => "\xC9\x8B",
"\xC9\x8C" => "\xC9\x8D",
"\xC9\x8E" => "\xC9\x8F",
"\xCD\xB0" => "\xCD\xB1",
"\xCD\xB2" => "\xCD\xB3",
"\xCD\xB6" => "\xCD\xB7",
"\xCD\xBF" => "\xCF\xB3",
"\xCE\x86" => "\xCE\xAC",
"\xCE\x88" => "\xCE\xAD",
"\xCE\x89" => "\xCE\xAE",
"\xCE\x8A" => "\xCE\xAF",
"\xCE\x8C" => "\xCF\x8C",
"\xCE\x8E" => "\xCF\x8D",
"\xCE\x8F" => "\xCF\x8E",
"\xCE\x90" => "\xCE\x90",
"\xCE\x91" => "\xCE\xB1",
"\xCE\x92" => "\xCE\xB2",
"\xCE\x93" => "\xCE\xB3",
"\xCE\x94" => "\xCE\xB4",
"\xCE\x95" => "\xCE\xB5",
"\xCE\x96" => "\xCE\xB6",
"\xCE\x97" => "\xCE\xB7",
"\xCE\x98" => "\xCE\xB8",
"\xCE\x99" => "\xCE\xB9",
"\xCE\x9A" => "\xCE\xBA",
"\xCE\x9B" => "\xCE\xBB",
"\xCE\x9C" => "\xCE\xBC",
"\xCE\x9D" => "\xCE\xBD",
"\xCE\x9E" => "\xCE\xBE",
"\xCE\x9F" => "\xCE\xBF",
"\xCE\xA0" => "\xCF\x80",
"\xCE\xA1" => "\xCF\x81",
"\xCE\xA3" => "\xCF\x83",
"\xCE\xA4" => "\xCF\x84",
"\xCE\xA5" => "\xCF\x85",
"\xCE\xA6" => "\xCF\x86",
"\xCE\xA7" => "\xCF\x87",
"\xCE\xA8" => "\xCF\x88",
"\xCE\xA9" => "\xCF\x89",
"\xCE\xAA" => "\xCF\x8A",
"\xCE\xAB" => "\xCF\x8B",
"\xCE\xB0" => "\xCE\xB0",
"\xCF\x8F" => "\xCF\x97",
"\xCF\x98" => "\xCF\x99",
"\xCF\x9A" => "\xCF\x9B",
"\xCF\x9C" => "\xCF\x9D",
"\xCF\x9E" => "\xCF\x9F",
"\xCF\xA0" => "\xCF\xA1",
"\xCF\xA2" => "\xCF\xA3",
"\xCF\xA4" => "\xCF\xA5",
"\xCF\xA6" => "\xCF\xA7",
"\xCF\xA8" => "\xCF\xA9",
"\xCF\xAA" => "\xCF\xAB",
"\xCF\xAC" => "\xCF\xAD",
"\xCF\xAE" => "\xCF\xAF",
"\xCF\xB4" => "\xCE\xB8",
"\xCF\xB7" => "\xCF\xB8",
"\xCF\xB9" => "\xCF\xB2",
"\xCF\xBA" => "\xCF\xBB",
"\xCF\xBD" => "\xCD\xBB",
"\xCF\xBE" => "\xCD\xBC",
"\xCF\xBF" => "\xCD\xBD",
"\xD0\x80" => "\xD1\x90",
"\xD0\x81" => "\xD1\x91",
"\xD0\x82" => "\xD1\x92",
"\xD0\x83" => "\xD1\x93",
"\xD0\x84" => "\xD1\x94",
"\xD0\x85" => "\xD1\x95",
"\xD0\x86" => "\xD1\x96",
"\xD0\x87" => "\xD1\x97",
"\xD0\x88" => "\xD1\x98",
"\xD0\x89" => "\xD1\x99",
"\xD0\x8A" => "\xD1\x9A",
"\xD0\x8B" => "\xD1\x9B",
"\xD0\x8C" => "\xD1\x9C",
"\xD0\x8D" => "\xD1\x9D",
"\xD0\x8E" => "\xD1\x9E",
"\xD0\x8F" => "\xD1\x9F",
"\xD0\x90" => "\xD0\xB0",
"\xD0\x91" => "\xD0\xB1",
"\xD0\x92" => "\xD0\xB2",
"\xD0\x93" => "\xD0\xB3",
"\xD0\x94" => "\xD0\xB4",
"\xD0\x95" => "\xD0\xB5",
"\xD0\x96" => "\xD0\xB6",
"\xD0\x97" => "\xD0\xB7",
"\xD0\x98" => "\xD0\xB8",
"\xD0\x99" => "\xD0\xB9",
"\xD0\x9A" => "\xD0\xBA",
"\xD0\x9B" => "\xD0\xBB",
"\xD0\x9C" => "\xD0\xBC",
"\xD0\x9D" => "\xD0\xBD",
"\xD0\x9E" => "\xD0\xBE",
"\xD0\x9F" => "\xD0\xBF",
"\xD0\xA0" => "\xD1\x80",
"\xD0\xA1" => "\xD1\x81",
"\xD0\xA2" => "\xD1\x82",
"\xD0\xA3" => "\xD1\x83",
"\xD0\xA4" => "\xD1\x84",
"\xD0\xA5" => "\xD1\x85",
"\xD0\xA6" => "\xD1\x86",
"\xD0\xA7" => "\xD1\x87",
"\xD0\xA8" => "\xD1\x88",
"\xD0\xA9" => "\xD1\x89",
"\xD0\xAA" => "\xD1\x8A",
"\xD0\xAB" => "\xD1\x8B",
"\xD0\xAC" => "\xD1\x8C",
"\xD0\xAD" => "\xD1\x8D",
"\xD0\xAE" => "\xD1\x8E",
"\xD0\xAF" => "\xD1\x8F",
"\xD1\xA0" => "\xD1\xA1",
"\xD1\xA2" => "\xD1\xA3",
"\xD1\xA4" => "\xD1\xA5",
"\xD1\xA6" => "\xD1\xA7",
"\xD1\xA8" => "\xD1\xA9",
"\xD1\xAA" => "\xD1\xAB",
"\xD1\xAC" => "\xD1\xAD",
"\xD1\xAE" => "\xD1\xAF",
"\xD1\xB0" => "\xD1\xB1",
"\xD1\xB2" => "\xD1\xB3",
"\xD1\xB4" => "\xD1\xB5",
"\xD1\xB6" => "\xD1\xB7",
"\xD1\xB8" => "\xD1\xB9",
"\xD1\xBA" => "\xD1\xBB",
"\xD1\xBC" => "\xD1\xBD",
"\xD1\xBE" => "\xD1\xBF",
"\xD2\x80" => "\xD2\x81",
"\xD2\x8A" => "\xD2\x8B",
"\xD2\x8C" => "\xD2\x8D",
"\xD2\x8E" => "\xD2\x8F",
"\xD2\x90" => "\xD2\x91",
"\xD2\x92" => "\xD2\x93",
"\xD2\x94" => "\xD2\x95",
"\xD2\x96" => "\xD2\x97",
"\xD2\x98" => "\xD2\x99",
"\xD2\x9A" => "\xD2\x9B",
"\xD2\x9C" => "\xD2\x9D",
"\xD2\x9E" => "\xD2\x9F",
"\xD2\xA0" => "\xD2\xA1",
"\xD2\xA2" => "\xD2\xA3",
"\xD2\xA4" => "\xD2\xA5",
"\xD2\xA6" => "\xD2\xA7",
"\xD2\xA8" => "\xD2\xA9",
"\xD2\xAA" => "\xD2\xAB",
"\xD2\xAC" => "\xD2\xAD",
"\xD2\xAE" => "\xD2\xAF",
"\xD2\xB0" => "\xD2\xB1",
"\xD2\xB2" => "\xD2\xB3",
"\xD2\xB4" => "\xD2\xB5",
"\xD2\xB6" => "\xD2\xB7",
"\xD2\xB8" => "\xD2\xB9",
"\xD2\xBA" => "\xD2\xBB",
"\xD2\xBC" => "\xD2\xBD",
"\xD2\xBE" => "\xD2\xBF",
"\xD3\x80" => "\xD3\x8F",
"\xD3\x81" => "\xD3\x82",
"\xD3\x83" => "\xD3\x84",
"\xD3\x85" => "\xD3\x86",
"\xD3\x87" => "\xD3\x88",
"\xD3\x89" => "\xD3\x8A",
"\xD3\x8B" => "\xD3\x8C",
"\xD3\x8D" => "\xD3\x8E",
"\xD3\x90" => "\xD3\x91",
"\xD3\x92" => "\xD3\x93",
"\xD3\x94" => "\xD3\x95",
"\xD3\x96" => "\xD3\x97",
"\xD3\x98" => "\xD3\x99",
"\xD3\x9A" => "\xD3\x9B",
"\xD3\x9C" => "\xD3\x9D",
"\xD3\x9E" => "\xD3\x9F",
"\xD3\xA0" => "\xD3\xA1",
"\xD3\xA2" => "\xD3\xA3",
"\xD3\xA4" => "\xD3\xA5",
"\xD3\xA6" => "\xD3\xA7",
"\xD3\xA8" => "\xD3\xA9",
"\xD3\xAA" => "\xD3\xAB",
"\xD3\xAC" => "\xD3\xAD",
"\xD3\xAE" => "\xD3\xAF",
"\xD3\xB0" => "\xD3\xB1",
"\xD3\xB2" => "\xD3\xB3",
"\xD3\xB4" => "\xD3\xB5",
"\xD3\xB6" => "\xD3\xB7",
"\xD3\xB8" => "\xD3\xB9",
"\xD3\xBA" => "\xD3\xBB",
"\xD3\xBC" => "\xD3\xBD",
"\xD3\xBE" => "\xD3\xBF",
"\xD4\x80" => "\xD4\x81",
"\xD4\x82" => "\xD4\x83",
"\xD4\x84" => "\xD4\x85",
"\xD4\x86" => "\xD4\x87",
"\xD4\x88" => "\xD4\x89",
"\xD4\x8A" => "\xD4\x8B",
"\xD4\x8C" => "\xD4\x8D",
"\xD4\x8E" => "\xD4\x8F",
"\xD4\x90" => "\xD4\x91",
"\xD4\x92" => "\xD4\x93",
"\xD4\x94" => "\xD4\x95",
"\xD4\x96" => "\xD4\x97",
"\xD4\x98" => "\xD4\x99",
"\xD4\x9A" => "\xD4\x9B",
"\xD4\x9C" => "\xD4\x9D",
"\xD4\x9E" => "\xD4\x9F",
"\xD4\xA0" => "\xD4\xA1",
"\xD4\xA2" => "\xD4\xA3",
"\xD4\xA4" => "\xD4\xA5",
"\xD4\xA6" => "\xD4\xA7",
"\xD4\xA8" => "\xD4\xA9",
"\xD4\xAA" => "\xD4\xAB",
"\xD4\xAC" => "\xD4\xAD",
"\xD4\xAE" => "\xD4\xAF",
"\xD4\xB1" => "\xD5\xA1",
"\xD4\xB2" => "\xD5\xA2",
"\xD4\xB3" => "\xD5\xA3",
"\xD4\xB4" => "\xD5\xA4",
"\xD4\xB5" => "\xD5\xA5",
"\xD4\xB6" => "\xD5\xA6",
"\xD4\xB7" => "\xD5\xA7",
"\xD4\xB8" => "\xD5\xA8",
"\xD4\xB9" => "\xD5\xA9",
"\xD4\xBA" => "\xD5\xAA",
"\xD4\xBB" => "\xD5\xAB",
"\xD4\xBC" => "\xD5\xAC",
"\xD4\xBD" => "\xD5\xAD",
"\xD4\xBE" => "\xD5\xAE",
"\xD4\xBF" => "\xD5\xAF",
"\xD5\x80" => "\xD5\xB0",
"\xD5\x81" => "\xD5\xB1",
"\xD5\x82" => "\xD5\xB2",
"\xD5\x83" => "\xD5\xB3",
"\xD5\x84" => "\xD5\xB4",
"\xD5\x85" => "\xD5\xB5",
"\xD5\x86" => "\xD5\xB6",
"\xD5\x87" => "\xD5\xB7",
"\xD5\x88" => "\xD5\xB8",
"\xD5\x89" => "\xD5\xB9",
"\xD5\x8A" => "\xD5\xBA",
"\xD5\x8B" => "\xD5\xBB",
"\xD5\x8C" => "\xD5\xBC",
"\xD5\x8D" => "\xD5\xBD",
"\xD5\x8E" => "\xD5\xBE",
"\xD5\x8F" => "\xD5\xBF",
"\xD5\x90" => "\xD6\x80",
"\xD5\x91" => "\xD6\x81",
"\xD5\x92" => "\xD6\x82",
"\xD5\x93" => "\xD6\x83",
"\xD5\x94" => "\xD6\x84",
"\xD5\x95" => "\xD6\x85",
"\xD5\x96" => "\xD6\x86",
"\xD6\x87" => "\xD6\x87",
"\xF0\x90\x90\x80" => "\xF0\x90\x90\xA8",
"\xF0\x90\x90\x81" => "\xF0\x90\x90\xA9",
"\xF0\x90\x90\x82" => "\xF0\x90\x90\xAA",
"\xF0\x90\x90\x83" => "\xF0\x90\x90\xAB",
"\xF0\x90\x90\x84" => "\xF0\x90\x90\xAC",
"\xF0\x90\x90\x85" => "\xF0\x90\x90\xAD",
"\xF0\x90\x90\x86" => "\xF0\x90\x90\xAE",
"\xF0\x90\x90\x87" => "\xF0\x90\x90\xAF",
"\xF0\x90\x90\x88" => "\xF0\x90\x90\xB0",
"\xF0\x90\x90\x89" => "\xF0\x90\x90\xB1",
"\xF0\x90\x90\x8A" => "\xF0\x90\x90\xB2",
"\xF0\x90\x90\x8B" => "\xF0\x90\x90\xB3",
"\xF0\x90\x90\x8C" => "\xF0\x90\x90\xB4",
"\xF0\x90\x90\x8D" => "\xF0\x90\x90\xB5",
"\xF0\x90\x90\x8E" => "\xF0\x90\x90\xB6",
"\xF0\x90\x90\x8F" => "\xF0\x90\x90\xB7",
"\xF0\x90\x90\x90" => "\xF0\x90\x90\xB8",
"\xF0\x90\x90\x91" => "\xF0\x90\x90\xB9",
"\xF0\x90\x90\x92" => "\xF0\x90\x90\xBA",
"\xF0\x90\x90\x93" => "\xF0\x90\x90\xBB",
"\xF0\x90\x90\x94" => "\xF0\x90\x90\xBC",
"\xF0\x90\x90\x95" => "\xF0\x90\x90\xBD",
"\xF0\x90\x90\x96" => "\xF0\x90\x90\xBE",
"\xF0\x90\x90\x97" => "\xF0\x90\x90\xBF",
"\xF0\x90\x90\x98" => "\xF0\x90\x91\x80",
"\xF0\x90\x90\x99" => "\xF0\x90\x91\x81",
"\xF0\x90\x90\x9A" => "\xF0\x90\x91\x82",
"\xF0\x90\x90\x9B" => "\xF0\x90\x91\x83",
"\xF0\x90\x90\x9C" => "\xF0\x90\x91\x84",
"\xF0\x90\x90\x9D" => "\xF0\x90\x91\x85",
"\xF0\x90\x90\x9E" => "\xF0\x90\x91\x86",
"\xF0\x90\x90\x9F" => "\xF0\x90\x91\x87",
"\xF0\x90\x90\xA0" => "\xF0\x90\x91\x88",
"\xF0\x90\x90\xA1" => "\xF0\x90\x91\x89",
"\xF0\x90\x90\xA2" => "\xF0\x90\x91\x8A",
"\xF0\x90\x90\xA3" => "\xF0\x90\x91\x8B",
"\xF0\x90\x90\xA4" => "\xF0\x90\x91\x8C",
"\xF0\x90\x90\xA5" => "\xF0\x90\x91\x8D",
"\xF0\x90\x90\xA6" => "\xF0\x90\x91\x8E",
"\xF0\x90\x90\xA7" => "\xF0\x90\x91\x8F",
"\xF0\x90\x92\xB0" => "\xF0\x90\x93\x98",
"\xF0\x90\x92\xB1" => "\xF0\x90\x93\x99",
"\xF0\x90\x92\xB2" => "\xF0\x90\x93\x9A",
"\xF0\x90\x92\xB3" => "\xF0\x90\x93\x9B",
"\xF0\x90\x92\xB4" => "\xF0\x90\x93\x9C",
"\xF0\x90\x92\xB5" => "\xF0\x90\x93\x9D",
"\xF0\x90\x92\xB6" => "\xF0\x90\x93\x9E",
"\xF0\x90\x92\xB7" => "\xF0\x90\x93\x9F",
"\xF0\x90\x92\xB8" => "\xF0\x90\x93\xA0",
"\xF0\x90\x92\xB9" => "\xF0\x90\x93\xA1",
"\xF0\x90\x92\xBA" => "\xF0\x90\x93\xA2",
"\xF0\x90\x92\xBB" => "\xF0\x90\x93\xA3",
"\xF0\x90\x92\xBC" => "\xF0\x90\x93\xA4",
"\xF0\x90\x92\xBD" => "\xF0\x90\x93\xA5",
"\xF0\x90\x92\xBE" => "\xF0\x90\x93\xA6",
"\xF0\x90\x92\xBF" => "\xF0\x90\x93\xA7",
"\xF0\x90\x93\x80" => "\xF0\x90\x93\xA8",
"\xF0\x90\x93\x81" => "\xF0\x90\x93\xA9",
"\xF0\x90\x93\x82" => "\xF0\x90\x93\xAA",
"\xF0\x90\x93\x83" => "\xF0\x90\x93\xAB",
"\xF0\x90\x93\x84" => "\xF0\x90\x93\xAC",
"\xF0\x90\x93\x85" => "\xF0\x90\x93\xAD",
"\xF0\x90\x93\x86" => "\xF0\x90\x93\xAE",
"\xF0\x90\x93\x87" => "\xF0\x90\x93\xAF",
"\xF0\x90\x93\x88" => "\xF0\x90\x93\xB0",
"\xF0\x90\x93\x89" => "\xF0\x90\x93\xB1",
"\xF0\x90\x93\x8A" => "\xF0\x90\x93\xB2",
"\xF0\x90\x93\x8B" => "\xF0\x90\x93\xB3",
"\xF0\x90\x93\x8C" => "\xF0\x90\x93\xB4",
"\xF0\x90\x93\x8D" => "\xF0\x90\x93\xB5",
"\xF0\x90\x93\x8E" => "\xF0\x90\x93\xB6",
"\xF0\x90\x93\x8F" => "\xF0\x90\x93\xB7",
"\xF0\x90\x93\x90" => "\xF0\x90\x93\xB8",
"\xF0\x90\x93\x91" => "\xF0\x90\x93\xB9",
"\xF0\x90\x93\x92" => "\xF0\x90\x93\xBA",
"\xF0\x90\x93\x93" => "\xF0\x90\x93\xBB",
"\xF0\x90\x95\xB0" => "\xF0\x90\x96\x97",
"\xF0\x90\x95\xB1" => "\xF0\x90\x96\x98",
"\xF0\x90\x95\xB2" => "\xF0\x90\x96\x99",
"\xF0\x90\x95\xB3" => "\xF0\x90\x96\x9A",
"\xF0\x90\x95\xB4" => "\xF0\x90\x96\x9B",
"\xF0\x90\x95\xB5" => "\xF0\x90\x96\x9C",
"\xF0\x90\x95\xB6" => "\xF0\x90\x96\x9D",
"\xF0\x90\x95\xB7" => "\xF0\x90\x96\x9E",
"\xF0\x90\x95\xB8" => "\xF0\x90\x96\x9F",
"\xF0\x90\x95\xB9" => "\xF0\x90\x96\xA0",
"\xF0\x90\x95\xBA" => "\xF0\x90\x96\xA1",
"\xF0\x90\x95\xBC" => "\xF0\x90\x96\xA3",
"\xF0\x90\x95\xBD" => "\xF0\x90\x96\xA4",
"\xF0\x90\x95\xBE" => "\xF0\x90\x96\xA5",
"\xF0\x90\x95\xBF" => "\xF0\x90\x96\xA6",
"\xF0\x90\x96\x80" => "\xF0\x90\x96\xA7",
"\xF0\x90\x96\x81" => "\xF0\x90\x96\xA8",
"\xF0\x90\x96\x82" => "\xF0\x90\x96\xA9",
"\xF0\x90\x96\x83" => "\xF0\x90\x96\xAA",
"\xF0\x90\x96\x84" => "\xF0\x90\x96\xAB",
"\xF0\x90\x96\x85" => "\xF0\x90\x96\xAC",
"\xF0\x90\x96\x86" => "\xF0\x90\x96\xAD",
"\xF0\x90\x96\x87" => "\xF0\x90\x96\xAE",
"\xF0\x90\x96\x88" => "\xF0\x90\x96\xAF",
"\xF0\x90\x96\x89" => "\xF0\x90\x96\xB0",
"\xF0\x90\x96\x8A" => "\xF0\x90\x96\xB1",
"\xF0\x90\x96\x8C" => "\xF0\x90\x96\xB3",
"\xF0\x90\x96\x8D" => "\xF0\x90\x96\xB4",
"\xF0\x90\x96\x8E" => "\xF0\x90\x96\xB5",
"\xF0\x90\x96\x8F" => "\xF0\x90\x96\xB6",
"\xF0\x90\x96\x90" => "\xF0\x90\x96\xB7",
"\xF0\x90\x96\x91" => "\xF0\x90\x96\xB8",
"\xF0\x90\x96\x92" => "\xF0\x90\x96\xB9",
"\xF0\x90\x96\x94" => "\xF0\x90\x96\xBB",
"\xF0\x90\x96\x95" => "\xF0\x90\x96\xBC",
"\xE1\x82\xA0" => "\xE2\xB4\x80",
"\xE1\x82\xA1" => "\xE2\xB4\x81",
"\xE1\x82\xA2" => "\xE2\xB4\x82",
"\xE1\x82\xA3" => "\xE2\xB4\x83",
"\xE1\x82\xA4" => "\xE2\xB4\x84",
"\xE1\x82\xA5" => "\xE2\xB4\x85",
"\xE1\x82\xA6" => "\xE2\xB4\x86",
"\xE1\x82\xA7" => "\xE2\xB4\x87",
"\xE1\x82\xA8" => "\xE2\xB4\x88",
"\xE1\x82\xA9" => "\xE2\xB4\x89",
"\xE1\x82\xAA" => "\xE2\xB4\x8A",
"\xE1\x82\xAB" => "\xE2\xB4\x8B",
"\xE1\x82\xAC" => "\xE2\xB4\x8C",
"\xE1\x82\xAD" => "\xE2\xB4\x8D",
"\xE1\x82\xAE" => "\xE2\xB4\x8E",
"\xE1\x82\xAF" => "\xE2\xB4\x8F",
"\xE1\x82\xB0" => "\xE2\xB4\x90",
"\xE1\x82\xB1" => "\xE2\xB4\x91",
"\xE1\x82\xB2" => "\xE2\xB4\x92",
"\xE1\x82\xB3" => "\xE2\xB4\x93",
"\xE1\x82\xB4" => "\xE2\xB4\x94",
"\xE1\x82\xB5" => "\xE2\xB4\x95",
"\xE1\x82\xB6" => "\xE2\xB4\x96",
"\xE1\x82\xB7" => "\xE2\xB4\x97",
"\xE1\x82\xB8" => "\xE2\xB4\x98",
"\xE1\x82\xB9" => "\xE2\xB4\x99",
"\xE1\x82\xBA" => "\xE2\xB4\x9A",
"\xE1\x82\xBB" => "\xE2\xB4\x9B",
"\xE1\x82\xBC" => "\xE2\xB4\x9C",
"\xE1\x82\xBD" => "\xE2\xB4\x9D",
"\xE1\x82\xBE" => "\xE2\xB4\x9E",
"\xE1\x82\xBF" => "\xE2\xB4\x9F",
"\xE1\x83\x80" => "\xE2\xB4\xA0",
"\xE1\x83\x81" => "\xE2\xB4\xA1",
"\xE1\x83\x82" => "\xE2\xB4\xA2",
"\xE1\x83\x83" => "\xE2\xB4\xA3",
"\xE1\x83\x84" => "\xE2\xB4\xA4",
"\xE1\x83\x85" => "\xE2\xB4\xA5",
"\xE1\x83\x87" => "\xE2\xB4\xA7",
"\xF0\x90\xB2\x80" => "\xF0\x90\xB3\x80",
"\xF0\x90\xB2\x81" => "\xF0\x90\xB3\x81",
"\xF0\x90\xB2\x82" => "\xF0\x90\xB3\x82",
"\xF0\x90\xB2\x83" => "\xF0\x90\xB3\x83",
"\xF0\x90\xB2\x84" => "\xF0\x90\xB3\x84",
"\xF0\x90\xB2\x85" => "\xF0\x90\xB3\x85",
"\xF0\x90\xB2\x86" => "\xF0\x90\xB3\x86",
"\xF0\x90\xB2\x87" => "\xF0\x90\xB3\x87",
"\xF0\x90\xB2\x88" => "\xF0\x90\xB3\x88",
"\xF0\x90\xB2\x89" => "\xF0\x90\xB3\x89",
"\xF0\x90\xB2\x8A" => "\xF0\x90\xB3\x8A",
"\xF0\x90\xB2\x8B" => "\xF0\x90\xB3\x8B",
"\xF0\x90\xB2\x8C" => "\xF0\x90\xB3\x8C",
"\xF0\x90\xB2\x8D" => "\xF0\x90\xB3\x8D",
"\xF0\x90\xB2\x8E" => "\xF0\x90\xB3\x8E",
"\xF0\x90\xB2\x8F" => "\xF0\x90\xB3\x8F",
"\xF0\x90\xB2\x90" => "\xF0\x90\xB3\x90",
"\xF0\x90\xB2\x91" => "\xF0\x90\xB3\x91",
"\xF0\x90\xB2\x92" => "\xF0\x90\xB3\x92",
"\xF0\x90\xB2\x93" => "\xF0\x90\xB3\x93",
"\xF0\x90\xB2\x94" => "\xF0\x90\xB3\x94",
"\xF0\x90\xB2\x95" => "\xF0\x90\xB3\x95",
"\xF0\x90\xB2\x96" => "\xF0\x90\xB3\x96",
"\xF0\x90\xB2\x97" => "\xF0\x90\xB3\x97",
"\xF0\x90\xB2\x98" => "\xF0\x90\xB3\x98",
"\xF0\x90\xB2\x99" => "\xF0\x90\xB3\x99",
"\xF0\x90\xB2\x9A" => "\xF0\x90\xB3\x9A",
"\xF0\x90\xB2\x9B" => "\xF0\x90\xB3\x9B",
"\xF0\x90\xB2\x9C" => "\xF0\x90\xB3\x9C",
"\xF0\x90\xB2\x9D" => "\xF0\x90\xB3\x9D",
"\xF0\x90\xB2\x9E" => "\xF0\x90\xB3\x9E",
"\xF0\x90\xB2\x9F" => "\xF0\x90\xB3\x9F",
"\xF0\x90\xB2\xA0" => "\xF0\x90\xB3\xA0",
"\xF0\x90\xB2\xA1" => "\xF0\x90\xB3\xA1",
"\xF0\x90\xB2\xA2" => "\xF0\x90\xB3\xA2",
"\xF0\x90\xB2\xA3" => "\xF0\x90\xB3\xA3",
"\xF0\x90\xB2\xA4" => "\xF0\x90\xB3\xA4",
"\xF0\x90\xB2\xA5" => "\xF0\x90\xB3\xA5",
"\xF0\x90\xB2\xA6" => "\xF0\x90\xB3\xA6",
"\xF0\x90\xB2\xA7" => "\xF0\x90\xB3\xA7",
"\xF0\x90\xB2\xA8" => "\xF0\x90\xB3\xA8",
"\xF0\x90\xB2\xA9" => "\xF0\x90\xB3\xA9",
"\xF0\x90\xB2\xAA" => "\xF0\x90\xB3\xAA",
"\xF0\x90\xB2\xAB" => "\xF0\x90\xB3\xAB",
"\xF0\x90\xB2\xAC" => "\xF0\x90\xB3\xAC",
"\xF0\x90\xB2\xAD" => "\xF0\x90\xB3\xAD",
"\xF0\x90\xB2\xAE" => "\xF0\x90\xB3\xAE",
"\xF0\x90\xB2\xAF" => "\xF0\x90\xB3\xAF",
"\xF0\x90\xB2\xB0" => "\xF0\x90\xB3\xB0",
"\xF0\x90\xB2\xB1" => "\xF0\x90\xB3\xB1",
"\xF0\x90\xB2\xB2" => "\xF0\x90\xB3\xB2",
"\xE1\x83\x8D" => "\xE2\xB4\xAD",
"\xF0\x91\xA2\xA0" => "\xF0\x91\xA3\x80",
"\xF0\x91\xA2\xA1" => "\xF0\x91\xA3\x81",
"\xF0\x91\xA2\xA2" => "\xF0\x91\xA3\x82",
"\xF0\x91\xA2\xA3" => "\xF0\x91\xA3\x83",
"\xF0\x91\xA2\xA4" => "\xF0\x91\xA3\x84",
"\xF0\x91\xA2\xA5" => "\xF0\x91\xA3\x85",
"\xF0\x91\xA2\xA6" => "\xF0\x91\xA3\x86",
"\xF0\x91\xA2\xA7" => "\xF0\x91\xA3\x87",
"\xF0\x91\xA2\xA8" => "\xF0\x91\xA3\x88",
"\xF0\x91\xA2\xA9" => "\xF0\x91\xA3\x89",
"\xF0\x91\xA2\xAA" => "\xF0\x91\xA3\x8A",
"\xF0\x91\xA2\xAB" => "\xF0\x91\xA3\x8B",
"\xF0\x91\xA2\xAC" => "\xF0\x91\xA3\x8C",
"\xF0\x91\xA2\xAD" => "\xF0\x91\xA3\x8D",
"\xF0\x91\xA2\xAE" => "\xF0\x91\xA3\x8E",
"\xF0\x91\xA2\xAF" => "\xF0\x91\xA3\x8F",
"\xF0\x91\xA2\xB0" => "\xF0\x91\xA3\x90",
"\xF0\x91\xA2\xB1" => "\xF0\x91\xA3\x91",
"\xF0\x91\xA2\xB2" => "\xF0\x91\xA3\x92",
"\xF0\x91\xA2\xB3" => "\xF0\x91\xA3\x93",
"\xF0\x91\xA2\xB4" => "\xF0\x91\xA3\x94",
"\xF0\x91\xA2\xB5" => "\xF0\x91\xA3\x95",
"\xF0\x91\xA2\xB6" => "\xF0\x91\xA3\x96",
"\xF0\x91\xA2\xB7" => "\xF0\x91\xA3\x97",
"\xF0\x91\xA2\xB8" => "\xF0\x91\xA3\x98",
"\xF0\x91\xA2\xB9" => "\xF0\x91\xA3\x99",
"\xF0\x91\xA2\xBA" => "\xF0\x91\xA3\x9A",
"\xF0\x91\xA2\xBB" => "\xF0\x91\xA3\x9B",
"\xF0\x91\xA2\xBC" => "\xF0\x91\xA3\x9C",
"\xF0\x91\xA2\xBD" => "\xF0\x91\xA3\x9D",
"\xF0\x91\xA2\xBE" => "\xF0\x91\xA3\x9E",
"\xF0\x91\xA2\xBF" => "\xF0\x91\xA3\x9F",
"\xE1\x8E\xA0" => "\xEA\xAD\xB0",
"\xE1\x8E\xA1" => "\xEA\xAD\xB1",
"\xE1\x8E\xA2" => "\xEA\xAD\xB2",
"\xE1\x8E\xA3" => "\xEA\xAD\xB3",
"\xE1\x8E\xA4" => "\xEA\xAD\xB4",
"\xE1\x8E\xA5" => "\xEA\xAD\xB5",
"\xE1\x8E\xA6" => "\xEA\xAD\xB6",
"\xE1\x8E\xA7" => "\xEA\xAD\xB7",
"\xE1\x8E\xA8" => "\xEA\xAD\xB8",
"\xE1\x8E\xA9" => "\xEA\xAD\xB9",
"\xE1\x8E\xAA" => "\xEA\xAD\xBA",
"\xE1\x8E\xAB" => "\xEA\xAD\xBB",
"\xE1\x8E\xAC" => "\xEA\xAD\xBC",
"\xE1\x8E\xAD" => "\xEA\xAD\xBD",
"\xE1\x8E\xAE" => "\xEA\xAD\xBE",
"\xE1\x8E\xAF" => "\xEA\xAD\xBF",
"\xE1\x8E\xB0" => "\xEA\xAE\x80",
"\xE1\x8E\xB1" => "\xEA\xAE\x81",
"\xE1\x8E\xB2" => "\xEA\xAE\x82",
"\xE1\x8E\xB3" => "\xEA\xAE\x83",
"\xE1\x8E\xB4" => "\xEA\xAE\x84",
"\xE1\x8E\xB5" => "\xEA\xAE\x85",
"\xE1\x8E\xB6" => "\xEA\xAE\x86",
"\xE1\x8E\xB7" => "\xEA\xAE\x87",
"\xE1\x8E\xB8" => "\xEA\xAE\x88",
"\xE1\x8E\xB9" => "\xEA\xAE\x89",
"\xE1\x8E\xBA" => "\xEA\xAE\x8A",
"\xE1\x8E\xBB" => "\xEA\xAE\x8B",
"\xE1\x8E\xBC" => "\xEA\xAE\x8C",
"\xE1\x8E\xBD" => "\xEA\xAE\x8D",
"\xE1\x8E\xBE" => "\xEA\xAE\x8E",
"\xE1\x8E\xBF" => "\xEA\xAE\x8F",
"\xE1\x8F\x80" => "\xEA\xAE\x90",
"\xE1\x8F\x81" => "\xEA\xAE\x91",
"\xE1\x8F\x82" => "\xEA\xAE\x92",
"\xE1\x8F\x83" => "\xEA\xAE\x93",
"\xE1\x8F\x84" => "\xEA\xAE\x94",
"\xE1\x8F\x85" => "\xEA\xAE\x95",
"\xE1\x8F\x86" => "\xEA\xAE\x96",
"\xE1\x8F\x87" => "\xEA\xAE\x97",
"\xE1\x8F\x88" => "\xEA\xAE\x98",
"\xE1\x8F\x89" => "\xEA\xAE\x99",
"\xE1\x8F\x8A" => "\xEA\xAE\x9A",
"\xE1\x8F\x8B" => "\xEA\xAE\x9B",
"\xE1\x8F\x8C" => "\xEA\xAE\x9C",
"\xE1\x8F\x8D" => "\xEA\xAE\x9D",
"\xE1\x8F\x8E" => "\xEA\xAE\x9E",
"\xE1\x8F\x8F" => "\xEA\xAE\x9F",
"\xE1\x8F\x90" => "\xEA\xAE\xA0",
"\xE1\x8F\x91" => "\xEA\xAE\xA1",
"\xE1\x8F\x92" => "\xEA\xAE\xA2",
"\xE1\x8F\x93" => "\xEA\xAE\xA3",
"\xE1\x8F\x94" => "\xEA\xAE\xA4",
"\xE1\x8F\x95" => "\xEA\xAE\xA5",
"\xE1\x8F\x96" => "\xEA\xAE\xA6",
"\xE1\x8F\x97" => "\xEA\xAE\xA7",
"\xE1\x8F\x98" => "\xEA\xAE\xA8",
"\xE1\x8F\x99" => "\xEA\xAE\xA9",
"\xE1\x8F\x9A" => "\xEA\xAE\xAA",
"\xE1\x8F\x9B" => "\xEA\xAE\xAB",
"\xE1\x8F\x9C" => "\xEA\xAE\xAC",
"\xE1\x8F\x9D" => "\xEA\xAE\xAD",
"\xE1\x8F\x9E" => "\xEA\xAE\xAE",
"\xE1\x8F\x9F" => "\xEA\xAE\xAF",
"\xE1\x8F\xA0" => "\xEA\xAE\xB0",
"\xE1\x8F\xA1" => "\xEA\xAE\xB1",
"\xE1\x8F\xA2" => "\xEA\xAE\xB2",
"\xE1\x8F\xA3" => "\xEA\xAE\xB3",
"\xE1\x8F\xA4" => "\xEA\xAE\xB4",
"\xE1\x8F\xA5" => "\xEA\xAE\xB5",
"\xE1\x8F\xA6" => "\xEA\xAE\xB6",
"\xE1\x8F\xA7" => "\xEA\xAE\xB7",
"\xE1\x8F\xA8" => "\xEA\xAE\xB8",
"\xE1\x8F\xA9" => "\xEA\xAE\xB9",
"\xE1\x8F\xAA" => "\xEA\xAE\xBA",
"\xE1\x8F\xAB" => "\xEA\xAE\xBB",
"\xE1\x8F\xAC" => "\xEA\xAE\xBC",
"\xE1\x8F\xAD" => "\xEA\xAE\xBD",
"\xE1\x8F\xAE" => "\xEA\xAE\xBE",
"\xE1\x8F\xAF" => "\xEA\xAE\xBF",
"\xE1\x8F\xB0" => "\xE1\x8F\xB8",
"\xE1\x8F\xB1" => "\xE1\x8F\xB9",
"\xE1\x8F\xB2" => "\xE1\x8F\xBA",
"\xE1\x8F\xB3" => "\xE1\x8F\xBB",
"\xE1\x8F\xB4" => "\xE1\x8F\xBC",
"\xE1\x8F\xB5" => "\xE1\x8F\xBD",
Find: Select
?>
Replace With: Select
"\xF0\x96\xB9\x80" => "\xF0\x96\xB9\xA0",
"\xF0\x96\xB9\x81" => "\xF0\x96\xB9\xA1",
"\xF0\x96\xB9\x82" => "\xF0\x96\xB9\xA2",
"\xF0\x96\xB9\x83" => "\xF0\x96\xB9\xA3",
"\xF0\x96\xB9\x84" => "\xF0\x96\xB9\xA4",
"\xF0\x96\xB9\x85" => "\xF0\x96\xB9\xA5",
"\xF0\x96\xB9\x86" => "\xF0\x96\xB9\xA6",
"\xF0\x96\xB9\x87" => "\xF0\x96\xB9\xA7",
"\xF0\x96\xB9\x88" => "\xF0\x96\xB9\xA8",
"\xF0\x96\xB9\x89" => "\xF0\x96\xB9\xA9",
"\xF0\x96\xB9\x8A" => "\xF0\x96\xB9\xAA",
"\xF0\x96\xB9\x8B" => "\xF0\x96\xB9\xAB",
"\xF0\x96\xB9\x8C" => "\xF0\x96\xB9\xAC",
"\xF0\x96\xB9\x8D" => "\xF0\x96\xB9\xAD",
"\xF0\x96\xB9\x8E" => "\xF0\x96\xB9\xAE",
"\xF0\x96\xB9\x8F" => "\xF0\x96\xB9\xAF",
"\xF0\x96\xB9\x90" => "\xF0\x96\xB9\xB0",
"\xF0\x96\xB9\x91" => "\xF0\x96\xB9\xB1",
"\xF0\x96\xB9\x92" => "\xF0\x96\xB9\xB2",
"\xF0\x96\xB9\x93" => "\xF0\x96\xB9\xB3",
"\xF0\x96\xB9\x94" => "\xF0\x96\xB9\xB4",
"\xF0\x96\xB9\x95" => "\xF0\x96\xB9\xB5",
"\xF0\x96\xB9\x96" => "\xF0\x96\xB9\xB6",
"\xF0\x96\xB9\x97" => "\xF0\x96\xB9\xB7",
"\xF0\x96\xB9\x98" => "\xF0\x96\xB9\xB8",
"\xF0\x96\xB9\x99" => "\xF0\x96\xB9\xB9",
"\xF0\x96\xB9\x9A" => "\xF0\x96\xB9\xBA",
"\xF0\x96\xB9\x9B" => "\xF0\x96\xB9\xBB",
"\xF0\x96\xB9\x9C" => "\xF0\x96\xB9\xBC",
"\xF0\x96\xB9\x9D" => "\xF0\x96\xB9\xBD",
"\xF0\x96\xB9\x9E" => "\xF0\x96\xB9\xBE",
"\xF0\x96\xB9\x9F" => "\xF0\x96\xB9\xBF",
"\xE1\xB2\x90" => "\xE1\x83\x90",
"\xE1\xB2\x91" => "\xE1\x83\x91",
"\xE1\xB2\x92" => "\xE1\x83\x92",
"\xE1\xB2\x93" => "\xE1\x83\x93",
"\xE1\xB2\x94" => "\xE1\x83\x94",
"\xE1\xB2\x95" => "\xE1\x83\x95",
"\xE1\xB2\x96" => "\xE1\x83\x96",
"\xE1\xB2\x97" => "\xE1\x83\x97",
"\xE1\xB2\x98" => "\xE1\x83\x98",
"\xE1\xB2\x99" => "\xE1\x83\x99",
"\xE1\xB2\x9A" => "\xE1\x83\x9A",
"\xE1\xB2\x9B" => "\xE1\x83\x9B",
"\xE1\xB2\x9C" => "\xE1\x83\x9C",
"\xE1\xB2\x9D" => "\xE1\x83\x9D",
"\xE1\xB2\x9E" => "\xE1\x83\x9E",
"\xE1\xB2\x9F" => "\xE1\x83\x9F",
"\xE1\xB2\xA0" => "\xE1\x83\xA0",
"\xE1\xB2\xA1" => "\xE1\x83\xA1",
"\xE1\xB2\xA2" => "\xE1\x83\xA2",
"\xE1\xB2\xA3" => "\xE1\x83\xA3",
"\xE1\xB2\xA4" => "\xE1\x83\xA4",
"\xE1\xB2\xA5" => "\xE1\x83\xA5",
"\xE1\xB2\xA6" => "\xE1\x83\xA6",
"\xE1\xB2\xA7" => "\xE1\x83\xA7",
"\xE1\xB2\xA8" => "\xE1\x83\xA8",
"\xE1\xB2\xA9" => "\xE1\x83\xA9",
"\xE1\xB2\xAA" => "\xE1\x83\xAA",
"\xE1\xB2\xAB" => "\xE1\x83\xAB",
"\xE1\xB2\xAC" => "\xE1\x83\xAC",
"\xE1\xB2\xAD" => "\xE1\x83\xAD",
"\xE1\xB2\xAE" => "\xE1\x83\xAE",
"\xE1\xB2\xAF" => "\xE1\x83\xAF",
"\xE1\xB2\xB0" => "\xE1\x83\xB0",
"\xE1\xB2\xB1" => "\xE1\x83\xB1",
"\xE1\xB2\xB2" => "\xE1\x83\xB2",
"\xE1\xB2\xB3" => "\xE1\x83\xB3",
"\xE1\xB2\xB4" => "\xE1\x83\xB4",
"\xE1\xB2\xB5" => "\xE1\x83\xB5",
"\xE1\xB2\xB6" => "\xE1\x83\xB6",
"\xE1\xB2\xB7" => "\xE1\x83\xB7",
"\xE1\xB2\xB8" => "\xE1\x83\xB8",
"\xE1\xB2\xB9" => "\xE1\x83\xB9",
"\xE1\xB2\xBA" => "\xE1\x83\xBA",
"\xE1\xB2\xBD" => "\xE1\x83\xBD",
"\xE1\xB2\xBE" => "\xE1\x83\xBE",
"\xE1\xB2\xBF" => "\xE1\x83\xBF",
"\xE1\xB8\x80" => "\xE1\xB8\x81",
"\xE1\xB8\x82" => "\xE1\xB8\x83",
"\xE1\xB8\x84" => "\xE1\xB8\x85",
"\xE1\xB8\x86" => "\xE1\xB8\x87",
"\xE1\xB8\x88" => "\xE1\xB8\x89",
"\xE1\xB8\x8A" => "\xE1\xB8\x8B",
"\xE1\xB8\x8C" => "\xE1\xB8\x8D",
"\xE1\xB8\x8E" => "\xE1\xB8\x8F",
"\xE1\xB8\x90" => "\xE1\xB8\x91",
"\xE1\xB8\x92" => "\xE1\xB8\x93",
"\xE1\xB8\x94" => "\xE1\xB8\x95",
"\xE1\xB8\x96" => "\xE1\xB8\x97",
"\xE1\xB8\x98" => "\xE1\xB8\x99",
"\xE1\xB8\x9A" => "\xE1\xB8\x9B",
"\xE1\xB8\x9C" => "\xE1\xB8\x9D",
"\xE1\xB8\x9E" => "\xE1\xB8\x9F",
"\xE1\xB8\xA0" => "\xE1\xB8\xA1",
"\xE1\xB8\xA2" => "\xE1\xB8\xA3",
"\xE1\xB8\xA4" => "\xE1\xB8\xA5",
"\xE1\xB8\xA6" => "\xE1\xB8\xA7",
"\xE1\xB8\xA8" => "\xE1\xB8\xA9",
"\xE1\xB8\xAA" => "\xE1\xB8\xAB",
"\xE1\xB8\xAC" => "\xE1\xB8\xAD",
"\xE1\xB8\xAE" => "\xE1\xB8\xAF",
"\xE1\xB8\xB0" => "\xE1\xB8\xB1",
"\xE1\xB8\xB2" => "\xE1\xB8\xB3",
"\xE1\xB8\xB4" => "\xE1\xB8\xB5",
"\xE1\xB8\xB6" => "\xE1\xB8\xB7",
"\xE1\xB8\xB8" => "\xE1\xB8\xB9",
"\xE1\xB8\xBA" => "\xE1\xB8\xBB",
"\xE1\xB8\xBC" => "\xE1\xB8\xBD",
"\xE1\xB8\xBE" => "\xE1\xB8\xBF",
"\xE1\xB9\x80" => "\xE1\xB9\x81",
"\xE1\xB9\x82" => "\xE1\xB9\x83",
"\xE1\xB9\x84" => "\xE1\xB9\x85",
"\xE1\xB9\x86" => "\xE1\xB9\x87",
"\xE1\xB9\x88" => "\xE1\xB9\x89",
"\xE1\xB9\x8A" => "\xE1\xB9\x8B",
"\xE1\xB9\x8C" => "\xE1\xB9\x8D",
"\xE1\xB9\x8E" => "\xE1\xB9\x8F",
"\xE1\xB9\x90" => "\xE1\xB9\x91",
"\xE1\xB9\x92" => "\xE1\xB9\x93",
"\xE1\xB9\x94" => "\xE1\xB9\x95",
"\xE1\xB9\x96" => "\xE1\xB9\x97",
"\xE1\xB9\x98" => "\xE1\xB9\x99",
"\xE1\xB9\x9A" => "\xE1\xB9\x9B",
"\xE1\xB9\x9C" => "\xE1\xB9\x9D",
"\xE1\xB9\x9E" => "\xE1\xB9\x9F",
"\xE1\xB9\xA0" => "\xE1\xB9\xA1",
"\xE1\xB9\xA2" => "\xE1\xB9\xA3",
"\xE1\xB9\xA4" => "\xE1\xB9\xA5",
"\xE1\xB9\xA6" => "\xE1\xB9\xA7",
"\xE1\xB9\xA8" => "\xE1\xB9\xA9",
"\xE1\xB9\xAA" => "\xE1\xB9\xAB",
"\xE1\xB9\xAC" => "\xE1\xB9\xAD",
"\xE1\xB9\xAE" => "\xE1\xB9\xAF",
"\xE1\xB9\xB0" => "\xE1\xB9\xB1",
"\xE1\xB9\xB2" => "\xE1\xB9\xB3",
"\xE1\xB9\xB4" => "\xE1\xB9\xB5",
"\xE1\xB9\xB6" => "\xE1\xB9\xB7",
"\xE1\xB9\xB8" => "\xE1\xB9\xB9",
"\xE1\xB9\xBA" => "\xE1\xB9\xBB",
"\xE1\xB9\xBC" => "\xE1\xB9\xBD",
"\xE1\xB9\xBE" => "\xE1\xB9\xBF",
"\xE1\xBA\x80" => "\xE1\xBA\x81",
"\xE1\xBA\x82" => "\xE1\xBA\x83",
"\xE1\xBA\x84" => "\xE1\xBA\x85",
"\xE1\xBA\x86" => "\xE1\xBA\x87",
"\xE1\xBA\x88" => "\xE1\xBA\x89",
"\xE1\xBA\x8A" => "\xE1\xBA\x8B",
"\xE1\xBA\x8C" => "\xE1\xBA\x8D",
"\xE1\xBA\x8E" => "\xE1\xBA\x8F",
"\xF0\x9E\xA4\x80" => "\xF0\x9E\xA4\xA2",
"\xF0\x9E\xA4\x81" => "\xF0\x9E\xA4\xA3",
"\xF0\x9E\xA4\x82" => "\xF0\x9E\xA4\xA4",
"\xF0\x9E\xA4\x83" => "\xF0\x9E\xA4\xA5",
"\xF0\x9E\xA4\x84" => "\xF0\x9E\xA4\xA6",
"\xF0\x9E\xA4\x85" => "\xF0\x9E\xA4\xA7",
"\xF0\x9E\xA4\x86" => "\xF0\x9E\xA4\xA8",
"\xF0\x9E\xA4\x87" => "\xF0\x9E\xA4\xA9",
"\xF0\x9E\xA4\x88" => "\xF0\x9E\xA4\xAA",
"\xF0\x9E\xA4\x89" => "\xF0\x9E\xA4\xAB",
"\xE1\xBA\x90" => "\xE1\xBA\x91",
"\xF0\x9E\xA4\x8A" => "\xF0\x9E\xA4\xAC",
"\xF0\x9E\xA4\x8B" => "\xF0\x9E\xA4\xAD",
"\xF0\x9E\xA4\x8C" => "\xF0\x9E\xA4\xAE",
"\xF0\x9E\xA4\x8D" => "\xF0\x9E\xA4\xAF",
"\xF0\x9E\xA4\x8E" => "\xF0\x9E\xA4\xB0",
"\xF0\x9E\xA4\x8F" => "\xF0\x9E\xA4\xB1",
"\xF0\x9E\xA4\x90" => "\xF0\x9E\xA4\xB2",
"\xF0\x9E\xA4\x91" => "\xF0\x9E\xA4\xB3",
"\xF0\x9E\xA4\x92" => "\xF0\x9E\xA4\xB4",
"\xF0\x9E\xA4\x93" => "\xF0\x9E\xA4\xB5",
"\xF0\x9E\xA4\x94" => "\xF0\x9E\xA4\xB6",
"\xF0\x9E\xA4\x95" => "\xF0\x9E\xA4\xB7",
"\xF0\x9E\xA4\x96" => "\xF0\x9E\xA4\xB8",
"\xF0\x9E\xA4\x97" => "\xF0\x9E\xA4\xB9",
"\xF0\x9E\xA4\x98" => "\xF0\x9E\xA4\xBA",
"\xF0\x9E\xA4\x99" => "\xF0\x9E\xA4\xBB",
"\xF0\x9E\xA4\x9A" => "\xF0\x9E\xA4\xBC",
"\xF0\x9E\xA4\x9B" => "\xF0\x9E\xA4\xBD",
"\xF0\x9E\xA4\x9C" => "\xF0\x9E\xA4\xBE",
"\xF0\x9E\xA4\x9D" => "\xF0\x9E\xA4\xBF",
"\xF0\x9E\xA4\x9E" => "\xF0\x9E\xA5\x80",
"\xF0\x9E\xA4\x9F" => "\xF0\x9E\xA5\x81",
"\xF0\x9E\xA4\xA0" => "\xF0\x9E\xA5\x82",
"\xF0\x9E\xA4\xA1" => "\xF0\x9E\xA5\x83",
"\xE1\xBA\x92" => "\xE1\xBA\x93",
"\xE1\xBA\x94" => "\xE1\xBA\x95",
"\xE1\xBA\x96" => "\xE1\xBA\x96",
"\xE1\xBA\x97" => "\xE1\xBA\x97",
"\xE1\xBA\x98" => "\xE1\xBA\x98",
"\xE1\xBA\x99" => "\xE1\xBA\x99",
"\xE1\xBA\x9A" => "\xE1\xBA\x9A",
"\xE1\xBA\x9E" => "\xC3\x9F",
"\xE1\xBA\xA0" => "\xE1\xBA\xA1",
"\xE1\xBA\xA2" => "\xE1\xBA\xA3",
"\xE1\xBA\xA4" => "\xE1\xBA\xA5",
"\xE1\xBA\xA6" => "\xE1\xBA\xA7",
"\xE1\xBA\xA8" => "\xE1\xBA\xA9",
"\xE1\xBA\xAA" => "\xE1\xBA\xAB",
"\xE1\xBA\xAC" => "\xE1\xBA\xAD",
"\xE1\xBA\xAE" => "\xE1\xBA\xAF",
"\xE1\xBA\xB0" => "\xE1\xBA\xB1",
"\xE1\xBA\xB2" => "\xE1\xBA\xB3",
"\xE1\xBA\xB4" => "\xE1\xBA\xB5",
"\xE1\xBA\xB6" => "\xE1\xBA\xB7",
"\xE1\xBA\xB8" => "\xE1\xBA\xB9",
"\xE1\xBA\xBA" => "\xE1\xBA\xBB",
"\xE1\xBA\xBC" => "\xE1\xBA\xBD",
"\xE1\xBA\xBE" => "\xE1\xBA\xBF",
"\xE1\xBB\x80" => "\xE1\xBB\x81",
"\xE1\xBB\x82" => "\xE1\xBB\x83",
"\xE1\xBB\x84" => "\xE1\xBB\x85",
"\xE1\xBB\x86" => "\xE1\xBB\x87",
"\xE1\xBB\x88" => "\xE1\xBB\x89",
"\xE1\xBB\x8A" => "\xE1\xBB\x8B",
"\xE1\xBB\x8C" => "\xE1\xBB\x8D",
"\xE1\xBB\x8E" => "\xE1\xBB\x8F",
"\xE1\xBB\x90" => "\xE1\xBB\x91",
"\xE1\xBB\x92" => "\xE1\xBB\x93",
"\xE1\xBB\x94" => "\xE1\xBB\x95",
"\xE1\xBB\x96" => "\xE1\xBB\x97",
"\xE1\xBB\x98" => "\xE1\xBB\x99",
"\xE1\xBB\x9A" => "\xE1\xBB\x9B",
"\xE1\xBB\x9C" => "\xE1\xBB\x9D",
"\xE1\xBB\x9E" => "\xE1\xBB\x9F",
"\xE1\xBB\xA0" => "\xE1\xBB\xA1",
"\xE1\xBB\xA2" => "\xE1\xBB\xA3",
"\xE1\xBB\xA4" => "\xE1\xBB\xA5",
"\xE1\xBB\xA6" => "\xE1\xBB\xA7",
"\xE1\xBB\xA8" => "\xE1\xBB\xA9",
"\xE1\xBB\xAA" => "\xE1\xBB\xAB",
"\xE1\xBB\xAC" => "\xE1\xBB\xAD",
"\xE1\xBB\xAE" => "\xE1\xBB\xAF",
"\xE1\xBB\xB0" => "\xE1\xBB\xB1",
"\xE1\xBB\xB2" => "\xE1\xBB\xB3",
"\xE1\xBB\xB4" => "\xE1\xBB\xB5",
"\xE1\xBB\xB6" => "\xE1\xBB\xB7",
"\xE1\xBB\xB8" => "\xE1\xBB\xB9",
"\xE1\xBB\xBA" => "\xE1\xBB\xBB",
"\xE1\xBB\xBC" => "\xE1\xBB\xBD",
"\xE1\xBB\xBE" => "\xE1\xBB\xBF",
"\xE1\xBC\x88" => "\xE1\xBC\x80",
"\xE1\xBC\x89" => "\xE1\xBC\x81",
"\xE1\xBC\x8A" => "\xE1\xBC\x82",
"\xE1\xBC\x8B" => "\xE1\xBC\x83",
"\xE1\xBC\x8C" => "\xE1\xBC\x84",
"\xE1\xBC\x8D" => "\xE1\xBC\x85",
"\xE1\xBC\x8E" => "\xE1\xBC\x86",
"\xE1\xBC\x8F" => "\xE1\xBC\x87",
"\xE1\xBC\x98" => "\xE1\xBC\x90",
"\xE1\xBC\x99" => "\xE1\xBC\x91",
"\xE1\xBC\x9A" => "\xE1\xBC\x92",
"\xE1\xBC\x9B" => "\xE1\xBC\x93",
"\xE1\xBC\x9C" => "\xE1\xBC\x94",
"\xE1\xBC\x9D" => "\xE1\xBC\x95",
"\xE1\xBC\xA8" => "\xE1\xBC\xA0",
"\xE1\xBC\xA9" => "\xE1\xBC\xA1",
"\xE1\xBC\xAA" => "\xE1\xBC\xA2",
"\xE1\xBC\xAB" => "\xE1\xBC\xA3",
"\xE1\xBC\xAC" => "\xE1\xBC\xA4",
"\xE1\xBC\xAD" => "\xE1\xBC\xA5",
"\xE1\xBC\xAE" => "\xE1\xBC\xA6",
"\xE1\xBC\xAF" => "\xE1\xBC\xA7",
"\xE1\xBC\xB8" => "\xE1\xBC\xB0",
"\xE1\xBC\xB9" => "\xE1\xBC\xB1",
"\xE1\xBC\xBA" => "\xE1\xBC\xB2",
"\xE1\xBC\xBB" => "\xE1\xBC\xB3",
"\xE1\xBC\xBC" => "\xE1\xBC\xB4",
"\xE1\xBC\xBD" => "\xE1\xBC\xB5",
"\xE1\xBC\xBE" => "\xE1\xBC\xB6",
"\xE1\xBC\xBF" => "\xE1\xBC\xB7",
"\xE1\xBD\x88" => "\xE1\xBD\x80",
"\xE1\xBD\x89" => "\xE1\xBD\x81",
"\xE1\xBD\x8A" => "\xE1\xBD\x82",
"\xE1\xBD\x8B" => "\xE1\xBD\x83",
"\xE1\xBD\x8C" => "\xE1\xBD\x84",
"\xE1\xBD\x8D" => "\xE1\xBD\x85",
"\xE1\xBD\x90" => "\xE1\xBD\x90",
"\xE1\xBD\x92" => "\xE1\xBD\x92",
"\xE1\xBD\x94" => "\xE1\xBD\x94",
"\xE1\xBD\x96" => "\xE1\xBD\x96",
"\xE1\xBD\x99" => "\xE1\xBD\x91",
"\xE1\xBD\x9B" => "\xE1\xBD\x93",
"\xE1\xBD\x9D" => "\xE1\xBD\x95",
"\xE1\xBD\x9F" => "\xE1\xBD\x97",
"\xE1\xBD\xA8" => "\xE1\xBD\xA0",
"\xE1\xBD\xA9" => "\xE1\xBD\xA1",
"\xE1\xBD\xAA" => "\xE1\xBD\xA2",
"\xE1\xBD\xAB" => "\xE1\xBD\xA3",
"\xE1\xBD\xAC" => "\xE1\xBD\xA4",
"\xE1\xBD\xAD" => "\xE1\xBD\xA5",
"\xE1\xBD\xAE" => "\xE1\xBD\xA6",
"\xE1\xBD\xAF" => "\xE1\xBD\xA7",
"\xE1\xBE\x80" => "\xE1\xBE\x80",
"\xE1\xBE\x81" => "\xE1\xBE\x81",
"\xE1\xBE\x82" => "\xE1\xBE\x82",
"\xE1\xBE\x83" => "\xE1\xBE\x83",
"\xE1\xBE\x84" => "\xE1\xBE\x84",
"\xE1\xBE\x85" => "\xE1\xBE\x85",
"\xE1\xBE\x86" => "\xE1\xBE\x86",
"\xE1\xBE\x87" => "\xE1\xBE\x87",
"\xE1\xBE\x88" => "\xE1\xBE\x80",
"\xE1\xBE\x89" => "\xE1\xBE\x81",
"\xE1\xBE\x8A" => "\xE1\xBE\x82",
"\xE1\xBE\x8B" => "\xE1\xBE\x83",
"\xE1\xBE\x8C" => "\xE1\xBE\x84",
"\xE1\xBE\x8D" => "\xE1\xBE\x85",
"\xE1\xBE\x8E" => "\xE1\xBE\x86",
"\xE1\xBE\x8F" => "\xE1\xBE\x87",
"\xE1\xBE\x90" => "\xE1\xBE\x90",
"\xE1\xBE\x91" => "\xE1\xBE\x91",
"\xE1\xBE\x92" => "\xE1\xBE\x92",
"\xE1\xBE\x93" => "\xE1\xBE\x93",
"\xE1\xBE\x94" => "\xE1\xBE\x94",
"\xE1\xBE\x95" => "\xE1\xBE\x95",
"\xE1\xBE\x96" => "\xE1\xBE\x96",
"\xE1\xBE\x97" => "\xE1\xBE\x97",
"\xE1\xBE\x98" => "\xE1\xBE\x90",
"\xE1\xBE\x99" => "\xE1\xBE\x91",
"\xE1\xBE\x9A" => "\xE1\xBE\x92",
"\xE1\xBE\x9B" => "\xE1\xBE\x93",
"\xE1\xBE\x9C" => "\xE1\xBE\x94",
"\xE1\xBE\x9D" => "\xE1\xBE\x95",
"\xE1\xBE\x9E" => "\xE1\xBE\x96",
"\xE1\xBE\x9F" => "\xE1\xBE\x97",
"\xE1\xBE\xA0" => "\xE1\xBE\xA0",
"\xE1\xBE\xA1" => "\xE1\xBE\xA1",
"\xE1\xBE\xA2" => "\xE1\xBE\xA2",
"\xE1\xBE\xA3" => "\xE1\xBE\xA3",
"\xE1\xBE\xA4" => "\xE1\xBE\xA4",
"\xE1\xBE\xA5" => "\xE1\xBE\xA5",
"\xE1\xBE\xA6" => "\xE1\xBE\xA6",
"\xE1\xBE\xA7" => "\xE1\xBE\xA7",
"\xE1\xBE\xA8" => "\xE1\xBE\xA0",
"\xE1\xBE\xA9" => "\xE1\xBE\xA1",
"\xE1\xBE\xAA" => "\xE1\xBE\xA2",
"\xE1\xBE\xAB" => "\xE1\xBE\xA3",
"\xE1\xBE\xAC" => "\xE1\xBE\xA4",
"\xE1\xBE\xAD" => "\xE1\xBE\xA5",
"\xE1\xBE\xAE" => "\xE1\xBE\xA6",
"\xE1\xBE\xAF" => "\xE1\xBE\xA7",
"\xE1\xBE\xB2" => "\xE1\xBE\xB2",
"\xE1\xBE\xB3" => "\xE1\xBE\xB3",
"\xE1\xBE\xB4" => "\xE1\xBE\xB4",
"\xE1\xBE\xB6" => "\xE1\xBE\xB6",
"\xE1\xBE\xB7" => "\xE1\xBE\xB7",
"\xE1\xBE\xB8" => "\xE1\xBE\xB0",
"\xE1\xBE\xB9" => "\xE1\xBE\xB1",
"\xE1\xBE\xBA" => "\xE1\xBD\xB0",
"\xE1\xBE\xBB" => "\xE1\xBD\xB1",
"\xE1\xBE\xBC" => "\xE1\xBE\xB3",
"\xE1\xBF\x82" => "\xE1\xBF\x82",
"\xE1\xBF\x83" => "\xE1\xBF\x83",
"\xE1\xBF\x84" => "\xE1\xBF\x84",
"\xE1\xBF\x86" => "\xE1\xBF\x86",
"\xE1\xBF\x87" => "\xE1\xBF\x87",
"\xE1\xBF\x88" => "\xE1\xBD\xB2",
"\xE1\xBF\x89" => "\xE1\xBD\xB3",
"\xE1\xBF\x8A" => "\xE1\xBD\xB4",
"\xE1\xBF\x8B" => "\xE1\xBD\xB5",
"\xE1\xBF\x8C" => "\xE1\xBF\x83",
"\xE1\xBF\x92" => "\xE1\xBF\x92",
"\xE1\xBF\x93" => "\xE1\xBF\x93",
"\xE1\xBF\x96" => "\xE1\xBF\x96",
"\xE1\xBF\x97" => "\xE1\xBF\x97",
"\xE1\xBF\x98" => "\xE1\xBF\x90",
"\xE1\xBF\x99" => "\xE1\xBF\x91",
"\xE1\xBF\x9A" => "\xE1\xBD\xB6",
"\xE1\xBF\x9B" => "\xE1\xBD\xB7",
"\xE1\xBF\xA2" => "\xE1\xBF\xA2",
"\xE1\xBF\xA3" => "\xE1\xBF\xA3",
"\xE1\xBF\xA4" => "\xE1\xBF\xA4",
"\xE1\xBF\xA6" => "\xE1\xBF\xA6",
"\xE1\xBF\xA7" => "\xE1\xBF\xA7",
"\xE1\xBF\xA8" => "\xE1\xBF\xA0",
"\xE1\xBF\xA9" => "\xE1\xBF\xA1",
"\xE1\xBF\xAA" => "\xE1\xBD\xBA",
"\xE1\xBF\xAB" => "\xE1\xBD\xBB",
"\xE1\xBF\xAC" => "\xE1\xBF\xA5",
"\xE1\xBF\xB2" => "\xE1\xBF\xB2",
"\xE1\xBF\xB3" => "\xE1\xBF\xB3",
"\xE1\xBF\xB4" => "\xE1\xBF\xB4",
"\xE1\xBF\xB6" => "\xE1\xBF\xB6",
"\xE1\xBF\xB7" => "\xE1\xBF\xB7",
"\xE1\xBF\xB8" => "\xE1\xBD\xB8",
"\xE1\xBF\xB9" => "\xE1\xBD\xB9",
"\xE1\xBF\xBA" => "\xE1\xBD\xBC",
"\xE1\xBF\xBB" => "\xE1\xBD\xBD",
"\xE1\xBF\xBC" => "\xE1\xBF\xB3",
"\xE2\x84\xA6" => "\xCF\x89",
"\xE2\x84\xAA" => "\x6B",
"\xE2\x84\xAB" => "\xC3\xA5",
"\xE2\x84\xB2" => "\xE2\x85\x8E",
"\xE2\x85\xA0" => "\xE2\x85\xB0",
"\xE2\x85\xA1" => "\xE2\x85\xB1",
"\xE2\x85\xA2" => "\xE2\x85\xB2",
"\xE2\x85\xA3" => "\xE2\x85\xB3",
"\xE2\x85\xA4" => "\xE2\x85\xB4",
"\xE2\x85\xA5" => "\xE2\x85\xB5",
"\xE2\x85\xA6" => "\xE2\x85\xB6",
"\xE2\x85\xA7" => "\xE2\x85\xB7",
"\xE2\x85\xA8" => "\xE2\x85\xB8",
"\xE2\x85\xA9" => "\xE2\x85\xB9",
"\xE2\x85\xAA" => "\xE2\x85\xBA",
"\xE2\x85\xAB" => "\xE2\x85\xBB",
"\xE2\x85\xAC" => "\xE2\x85\xBC",
"\xE2\x85\xAD" => "\xE2\x85\xBD",
"\xE2\x85\xAE" => "\xE2\x85\xBE",
"\xE2\x85\xAF" => "\xE2\x85\xBF",
"\xE2\x86\x83" => "\xE2\x86\x84",
"\xE2\x92\xB6" => "\xE2\x93\x90",
"\xE2\x92\xB7" => "\xE2\x93\x91",
"\xE2\x92\xB8" => "\xE2\x93\x92",
"\xE2\x92\xB9" => "\xE2\x93\x93",
"\xE2\x92\xBA" => "\xE2\x93\x94",
"\xE2\x92\xBB" => "\xE2\x93\x95",
"\xE2\x92\xBC" => "\xE2\x93\x96",
"\xE2\x92\xBD" => "\xE2\x93\x97",
"\xE2\x92\xBE" => "\xE2\x93\x98",
"\xE2\x92\xBF" => "\xE2\x93\x99",
"\xE2\x93\x80" => "\xE2\x93\x9A",
"\xE2\x93\x81" => "\xE2\x93\x9B",
"\xE2\x93\x82" => "\xE2\x93\x9C",
"\xE2\x93\x83" => "\xE2\x93\x9D",
"\xE2\x93\x84" => "\xE2\x93\x9E",
"\xE2\x93\x85" => "\xE2\x93\x9F",
"\xE2\x93\x86" => "\xE2\x93\xA0",
"\xE2\x93\x87" => "\xE2\x93\xA1",
"\xE2\x93\x88" => "\xE2\x93\xA2",
"\xE2\x93\x89" => "\xE2\x93\xA3",
"\xE2\x93\x8A" => "\xE2\x93\xA4",
"\xE2\x93\x8B" => "\xE2\x93\xA5",
"\xE2\x93\x8C" => "\xE2\x93\xA6",
"\xE2\x93\x8D" => "\xE2\x93\xA7",
"\xE2\x93\x8E" => "\xE2\x93\xA8",
"\xE2\x93\x8F" => "\xE2\x93\xA9",
"\xE2\xB0\x80" => "\xE2\xB0\xB0",
"\xE2\xB0\x81" => "\xE2\xB0\xB1",
"\xE2\xB0\x82" => "\xE2\xB0\xB2",
"\xE2\xB0\x83" => "\xE2\xB0\xB3",
"\xE2\xB0\x84" => "\xE2\xB0\xB4",
"\xE2\xB0\x85" => "\xE2\xB0\xB5",
"\xE2\xB0\x86" => "\xE2\xB0\xB6",
"\xE2\xB0\x87" => "\xE2\xB0\xB7",
"\xE2\xB0\x88" => "\xE2\xB0\xB8",
"\xE2\xB0\x89" => "\xE2\xB0\xB9",
"\xE2\xB0\x8A" => "\xE2\xB0\xBA",
"\xE2\xB0\x8B" => "\xE2\xB0\xBB",
"\xE2\xB0\x8C" => "\xE2\xB0\xBC",
"\xE2\xB0\x8D" => "\xE2\xB0\xBD",
"\xE2\xB0\x8E" => "\xE2\xB0\xBE",
"\xE2\xB0\x8F" => "\xE2\xB0\xBF",
"\xE2\xB0\x90" => "\xE2\xB1\x80",
"\xE2\xB0\x91" => "\xE2\xB1\x81",
"\xE2\xB0\x92" => "\xE2\xB1\x82",
"\xE2\xB0\x93" => "\xE2\xB1\x83",
"\xE2\xB0\x94" => "\xE2\xB1\x84",
"\xE2\xB0\x95" => "\xE2\xB1\x85",
"\xE2\xB0\x96" => "\xE2\xB1\x86",
"\xE2\xB0\x97" => "\xE2\xB1\x87",
"\xE2\xB0\x98" => "\xE2\xB1\x88",
"\xE2\xB0\x99" => "\xE2\xB1\x89",
"\xE2\xB0\x9A" => "\xE2\xB1\x8A",
"\xE2\xB0\x9B" => "\xE2\xB1\x8B",
"\xE2\xB0\x9C" => "\xE2\xB1\x8C",
"\xE2\xB0\x9D" => "\xE2\xB1\x8D",
"\xE2\xB0\x9E" => "\xE2\xB1\x8E",
"\xE2\xB0\x9F" => "\xE2\xB1\x8F",
"\xE2\xB0\xA0" => "\xE2\xB1\x90",
"\xE2\xB0\xA1" => "\xE2\xB1\x91",
"\xE2\xB0\xA2" => "\xE2\xB1\x92",
"\xE2\xB0\xA3" => "\xE2\xB1\x93",
"\xE2\xB0\xA4" => "\xE2\xB1\x94",
"\xE2\xB0\xA5" => "\xE2\xB1\x95",
"\xE2\xB0\xA6" => "\xE2\xB1\x96",
"\xE2\xB0\xA7" => "\xE2\xB1\x97",
"\xE2\xB0\xA8" => "\xE2\xB1\x98",
"\xE2\xB0\xA9" => "\xE2\xB1\x99",
"\xE2\xB0\xAA" => "\xE2\xB1\x9A",
"\xE2\xB0\xAB" => "\xE2\xB1\x9B",
"\xE2\xB0\xAC" => "\xE2\xB1\x9C",
"\xE2\xB0\xAD" => "\xE2\xB1\x9D",
"\xE2\xB0\xAE" => "\xE2\xB1\x9E",
"\xE2\xB0\xAF" => "\xE2\xB1\x9F",
"\xE2\xB1\xA0" => "\xE2\xB1\xA1",
"\xE2\xB1\xA2" => "\xC9\xAB",
"\xE2\xB1\xA3" => "\xE1\xB5\xBD",
"\xE2\xB1\xA4" => "\xC9\xBD",
"\xE2\xB1\xA7" => "\xE2\xB1\xA8",
"\xE2\xB1\xA9" => "\xE2\xB1\xAA",
"\xE2\xB1\xAB" => "\xE2\xB1\xAC",
"\xE2\xB1\xAD" => "\xC9\x91",
"\xE2\xB1\xAE" => "\xC9\xB1",
"\xE2\xB1\xAF" => "\xC9\x90",
"\xE2\xB1\xB0" => "\xC9\x92",
"\xE2\xB1\xB2" => "\xE2\xB1\xB3",
"\xE2\xB1\xB5" => "\xE2\xB1\xB6",
"\xE2\xB1\xBE" => "\xC8\xBF",
"\xE2\xB1\xBF" => "\xC9\x80",
"\xE2\xB2\x80" => "\xE2\xB2\x81",
"\xE2\xB2\x82" => "\xE2\xB2\x83",
"\xE2\xB2\x84" => "\xE2\xB2\x85",
"\xE2\xB2\x86" => "\xE2\xB2\x87",
"\xE2\xB2\x88" => "\xE2\xB2\x89",
"\xE2\xB2\x8A" => "\xE2\xB2\x8B",
"\xE2\xB2\x8C" => "\xE2\xB2\x8D",
"\xE2\xB2\x8E" => "\xE2\xB2\x8F",
"\xE2\xB2\x90" => "\xE2\xB2\x91",
"\xE2\xB2\x92" => "\xE2\xB2\x93",
"\xE2\xB2\x94" => "\xE2\xB2\x95",
"\xE2\xB2\x96" => "\xE2\xB2\x97",
"\xE2\xB2\x98" => "\xE2\xB2\x99",
"\xE2\xB2\x9A" => "\xE2\xB2\x9B",
"\xE2\xB2\x9C" => "\xE2\xB2\x9D",
"\xE2\xB2\x9E" => "\xE2\xB2\x9F",
"\xE2\xB2\xA0" => "\xE2\xB2\xA1",
"\xE2\xB2\xA2" => "\xE2\xB2\xA3",
"\xE2\xB2\xA4" => "\xE2\xB2\xA5",
"\xE2\xB2\xA6" => "\xE2\xB2\xA7",
"\xE2\xB2\xA8" => "\xE2\xB2\xA9",
"\xE2\xB2\xAA" => "\xE2\xB2\xAB",
"\xE2\xB2\xAC" => "\xE2\xB2\xAD",
"\xE2\xB2\xAE" => "\xE2\xB2\xAF",
"\xE2\xB2\xB0" => "\xE2\xB2\xB1",
"\xE2\xB2\xB2" => "\xE2\xB2\xB3",
"\xE2\xB2\xB4" => "\xE2\xB2\xB5",
"\xE2\xB2\xB6" => "\xE2\xB2\xB7",
"\xE2\xB2\xB8" => "\xE2\xB2\xB9",
"\xE2\xB2\xBA" => "\xE2\xB2\xBB",
"\xE2\xB2\xBC" => "\xE2\xB2\xBD",
"\xE2\xB2\xBE" => "\xE2\xB2\xBF",
"\xE2\xB3\x80" => "\xE2\xB3\x81",
"\xE2\xB3\x82" => "\xE2\xB3\x83",
"\xE2\xB3\x84" => "\xE2\xB3\x85",
"\xE2\xB3\x86" => "\xE2\xB3\x87",
"\xE2\xB3\x88" => "\xE2\xB3\x89",
"\xE2\xB3\x8A" => "\xE2\xB3\x8B",
"\xE2\xB3\x8C" => "\xE2\xB3\x8D",
"\xE2\xB3\x8E" => "\xE2\xB3\x8F",
"\xE2\xB3\x90" => "\xE2\xB3\x91",
"\xE2\xB3\x92" => "\xE2\xB3\x93",
"\xE2\xB3\x94" => "\xE2\xB3\x95",
"\xE2\xB3\x96" => "\xE2\xB3\x97",
"\xE2\xB3\x98" => "\xE2\xB3\x99",
"\xE2\xB3\x9A" => "\xE2\xB3\x9B",
"\xE2\xB3\x9C" => "\xE2\xB3\x9D",
"\xE2\xB3\x9E" => "\xE2\xB3\x9F",
"\xE2\xB3\xA0" => "\xE2\xB3\xA1",
"\xE2\xB3\xA2" => "\xE2\xB3\xA3",
"\xE2\xB3\xAB" => "\xE2\xB3\xAC",
"\xE2\xB3\xAD" => "\xE2\xB3\xAE",
"\xE2\xB3\xB2" => "\xE2\xB3\xB3",
"\xEA\x99\x80" => "\xEA\x99\x81",
"\xEA\x99\x82" => "\xEA\x99\x83",
"\xEA\x99\x84" => "\xEA\x99\x85",
"\xEA\x99\x86" => "\xEA\x99\x87",
"\xEA\x99\x88" => "\xEA\x99\x89",
"\xEA\x99\x8A" => "\xEA\x99\x8B",
"\xEA\x99\x8C" => "\xEA\x99\x8D",
"\xEA\x99\x8E" => "\xEA\x99\x8F",
"\xEA\x99\x90" => "\xEA\x99\x91",
"\xEA\x99\x92" => "\xEA\x99\x93",
"\xEA\x99\x94" => "\xEA\x99\x95",
"\xEA\x99\x96" => "\xEA\x99\x97",
"\xEA\x99\x98" => "\xEA\x99\x99",
"\xEA\x99\x9A" => "\xEA\x99\x9B",
"\xEA\x99\x9C" => "\xEA\x99\x9D",
"\xEA\x99\x9E" => "\xEA\x99\x9F",
"\xEA\x99\xA0" => "\xEA\x99\xA1",
"\xEA\x99\xA2" => "\xEA\x99\xA3",
"\xEA\x99\xA4" => "\xEA\x99\xA5",
"\xEA\x99\xA6" => "\xEA\x99\xA7",
"\xEA\x99\xA8" => "\xEA\x99\xA9",
"\xEA\x99\xAA" => "\xEA\x99\xAB",
"\xEA\x99\xAC" => "\xEA\x99\xAD",
"\xEA\x9A\x80" => "\xEA\x9A\x81",
"\xEA\x9A\x82" => "\xEA\x9A\x83",
"\xEA\x9A\x84" => "\xEA\x9A\x85",
"\xEA\x9A\x86" => "\xEA\x9A\x87",
"\xEA\x9A\x88" => "\xEA\x9A\x89",
"\xEA\x9A\x8A" => "\xEA\x9A\x8B",
"\xEA\x9A\x8C" => "\xEA\x9A\x8D",
"\xEA\x9A\x8E" => "\xEA\x9A\x8F",
"\xEA\x9A\x90" => "\xEA\x9A\x91",
"\xEA\x9A\x92" => "\xEA\x9A\x93",
"\xEA\x9A\x94" => "\xEA\x9A\x95",
"\xEA\x9A\x96" => "\xEA\x9A\x97",
"\xEA\x9A\x98" => "\xEA\x9A\x99",
"\xEA\x9A\x9A" => "\xEA\x9A\x9B",
"\xEA\x9C\xA2" => "\xEA\x9C\xA3",
"\xEA\x9C\xA4" => "\xEA\x9C\xA5",
"\xEA\x9C\xA6" => "\xEA\x9C\xA7",
"\xEA\x9C\xA8" => "\xEA\x9C\xA9",
"\xEA\x9C\xAA" => "\xEA\x9C\xAB",
"\xEA\x9C\xAC" => "\xEA\x9C\xAD",
"\xEA\x9C\xAE" => "\xEA\x9C\xAF",
"\xEA\x9C\xB2" => "\xEA\x9C\xB3",
"\xEA\x9C\xB4" => "\xEA\x9C\xB5",
"\xEA\x9C\xB6" => "\xEA\x9C\xB7",
"\xEA\x9C\xB8" => "\xEA\x9C\xB9",
"\xEA\x9C\xBA" => "\xEA\x9C\xBB",
"\xEA\x9C\xBC" => "\xEA\x9C\xBD",
"\xEA\x9C\xBE" => "\xEA\x9C\xBF",
"\xEA\x9D\x80" => "\xEA\x9D\x81",
"\xEA\x9D\x82" => "\xEA\x9D\x83",
"\xEA\x9D\x84" => "\xEA\x9D\x85",
"\xEA\x9D\x86" => "\xEA\x9D\x87",
"\xEA\x9D\x88" => "\xEA\x9D\x89",
"\xEA\x9D\x8A" => "\xEA\x9D\x8B",
"\xEA\x9D\x8C" => "\xEA\x9D\x8D",
"\xEA\x9D\x8E" => "\xEA\x9D\x8F",
"\xEA\x9D\x90" => "\xEA\x9D\x91",
"\xEA\x9D\x92" => "\xEA\x9D\x93",
"\xEA\x9D\x94" => "\xEA\x9D\x95",
"\xEA\x9D\x96" => "\xEA\x9D\x97",
"\xEA\x9D\x98" => "\xEA\x9D\x99",
"\xEA\x9D\x9A" => "\xEA\x9D\x9B",
"\xEA\x9D\x9C" => "\xEA\x9D\x9D",
"\xEA\x9D\x9E" => "\xEA\x9D\x9F",
"\xEA\x9D\xA0" => "\xEA\x9D\xA1",
"\xEA\x9D\xA2" => "\xEA\x9D\xA3",
"\xEA\x9D\xA4" => "\xEA\x9D\xA5",
"\xEA\x9D\xA6" => "\xEA\x9D\xA7",
"\xEA\x9D\xA8" => "\xEA\x9D\xA9",
"\xEA\x9D\xAA" => "\xEA\x9D\xAB",
"\xEA\x9D\xAC" => "\xEA\x9D\xAD",
"\xEA\x9D\xAE" => "\xEA\x9D\xAF",
"\xEA\x9D\xB9" => "\xEA\x9D\xBA",
"\xEA\x9D\xBB" => "\xEA\x9D\xBC",
"\xEA\x9D\xBD" => "\xE1\xB5\xB9",
"\xEA\x9D\xBE" => "\xEA\x9D\xBF",
"\xEA\x9E\x80" => "\xEA\x9E\x81",
"\xEA\x9E\x82" => "\xEA\x9E\x83",
"\xEA\x9E\x84" => "\xEA\x9E\x85",
"\xEA\x9E\x86" => "\xEA\x9E\x87",
"\xEA\x9E\x8B" => "\xEA\x9E\x8C",
"\xEA\x9E\x8D" => "\xC9\xA5",
"\xEA\x9E\x90" => "\xEA\x9E\x91",
"\xEA\x9E\x92" => "\xEA\x9E\x93",
"\xEA\x9E\x96" => "\xEA\x9E\x97",
"\xEA\x9E\x98" => "\xEA\x9E\x99",
"\xEA\x9E\x9A" => "\xEA\x9E\x9B",
"\xEA\x9E\x9C" => "\xEA\x9E\x9D",
"\xEA\x9E\x9E" => "\xEA\x9E\x9F",
"\xEA\x9E\xA0" => "\xEA\x9E\xA1",
"\xEA\x9E\xA2" => "\xEA\x9E\xA3",
"\xEA\x9E\xA4" => "\xEA\x9E\xA5",
"\xEA\x9E\xA6" => "\xEA\x9E\xA7",
"\xEA\x9E\xA8" => "\xEA\x9E\xA9",
"\xEA\x9E\xAA" => "\xC9\xA6",
"\xEA\x9E\xAB" => "\xC9\x9C",
"\xEA\x9E\xAC" => "\xC9\xA1",
"\xEA\x9E\xAD" => "\xC9\xAC",
"\xEA\x9E\xAE" => "\xC9\xAA",
"\xEA\x9E\xB0" => "\xCA\x9E",
"\xEA\x9E\xB1" => "\xCA\x87",
"\xEA\x9E\xB2" => "\xCA\x9D",
"\xEA\x9E\xB3" => "\xEA\xAD\x93",
"\xEA\x9E\xB4" => "\xEA\x9E\xB5",
"\xEA\x9E\xB6" => "\xEA\x9E\xB7",
"\xEA\x9E\xB8" => "\xEA\x9E\xB9",
"\xEA\x9E\xBA" => "\xEA\x9E\xBB",
"\xEA\x9E\xBC" => "\xEA\x9E\xBD",
"\xEA\x9E\xBE" => "\xEA\x9E\xBF",
"\xEA\x9F\x80" => "\xEA\x9F\x81",
"\xEA\x9F\x82" => "\xEA\x9F\x83",
"\xEA\x9F\x84" => "\xEA\x9E\x94",
"\xEA\x9F\x85" => "\xCA\x82",
"\xEA\x9F\x86" => "\xE1\xB6\x8E",
"\xEA\x9F\x87" => "\xEA\x9F\x88",
"\xEA\x9F\x89" => "\xEA\x9F\x8A",
"\xEA\x9F\x90" => "\xEA\x9F\x91",
"\xEA\x9F\x96" => "\xEA\x9F\x97",
"\xEA\x9F\x98" => "\xEA\x9F\x99",
"\xEA\x9F\xB5" => "\xEA\x9F\xB6",
"\xEF\xAC\x80" => "\xEF\xAC\x80",
"\xEF\xAC\x81" => "\xEF\xAC\x81",
"\xEF\xAC\x82" => "\xEF\xAC\x82",
"\xEF\xAC\x83" => "\xEF\xAC\x83",
"\xEF\xAC\x84" => "\xEF\xAC\x84",
"\xEF\xAC\x85" => "\xEF\xAC\x85",
"\xEF\xAC\x86" => "\xEF\xAC\x86",
"\xEF\xAC\x93" => "\xEF\xAC\x93",
"\xEF\xAC\x94" => "\xEF\xAC\x94",
"\xEF\xAC\x95" => "\xEF\xAC\x95",
"\xEF\xAC\x96" => "\xEF\xAC\x96",
"\xEF\xAC\x97" => "\xEF\xAC\x97",
"\xEF\xBC\xA1" => "\xEF\xBD\x81",
"\xEF\xBC\xA2" => "\xEF\xBD\x82",
"\xEF\xBC\xA3" => "\xEF\xBD\x83",
"\xEF\xBC\xA4" => "\xEF\xBD\x84",
"\xEF\xBC\xA5" => "\xEF\xBD\x85",
"\xEF\xBC\xA6" => "\xEF\xBD\x86",
"\xEF\xBC\xA7" => "\xEF\xBD\x87",
"\xEF\xBC\xA8" => "\xEF\xBD\x88",
"\xEF\xBC\xA9" => "\xEF\xBD\x89",
"\xEF\xBC\xAA" => "\xEF\xBD\x8A",
"\xEF\xBC\xAB" => "\xEF\xBD\x8B",
"\xEF\xBC\xAC" => "\xEF\xBD\x8C",
"\xEF\xBC\xAD" => "\xEF\xBD\x8D",
"\xEF\xBC\xAE" => "\xEF\xBD\x8E",
"\xEF\xBC\xAF" => "\xEF\xBD\x8F",
"\xEF\xBC\xB0" => "\xEF\xBD\x90",
"\xEF\xBC\xB1" => "\xEF\xBD\x91",
"\xEF\xBC\xB2" => "\xEF\xBD\x92",
"\xEF\xBC\xB3" => "\xEF\xBD\x93",
"\xEF\xBC\xB4" => "\xEF\xBD\x94",
"\xEF\xBC\xB5" => "\xEF\xBD\x95",
"\xEF\xBC\xB6" => "\xEF\xBD\x96",
"\xEF\xBC\xB7" => "\xEF\xBD\x97",
"\xEF\xBC\xB8" => "\xEF\xBD\x98",
"\xEF\xBC\xB9" => "\xEF\xBD\x99",
"\xEF\xBC\xBA" => "\xEF\xBD\x9A",
);
}

?>

./Sources/Unicode/CaseUpper.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
function utf8_strtoupper_maps()
Replace With: Select
function utf8_strtoupper_simple_maps()
Find: Select
"\xF0\x9E\xA5\x82" => "\xF0\x9E\xA4\xA0",
"\xF0\x9E\xA5\x83" => "\xF0\x9E\xA4\xA1",
);
}

Replace With: Select
"\xF0\x9E\xA5\x82" => "\xF0\x9E\xA4\xA0",
"\xF0\x9E\xA5\x83" => "\xF0\x9E\xA4\xA1",
);
}

/**
* Helper function for utf8_strtoupper.
*
* Developers: Do not update the data in this function manually. Instead,
* run "php -f other/update_unicode_data.php" on the command line.
*
* @return array Lowercase to uppercase maps.
*/
function utf8_strtoupper_maps()
{
return array(
"\x61" => "\x41",
"\x62" => "\x42",
"\x63" => "\x43",
"\x64" => "\x44",
"\x65" => "\x45",
"\x66" => "\x46",
"\x67" => "\x47",
"\x68" => "\x48",
"\x69" => "\x49",
"\x6A" => "\x4A",
"\x6B" => "\x4B",
"\x6C" => "\x4C",
"\x6D" => "\x4D",
"\x6E" => "\x4E",
"\x6F" => "\x4F",
"\x70" => "\x50",
"\x71" => "\x51",
"\x72" => "\x52",
"\x73" => "\x53",
"\x74" => "\x54",
"\x75" => "\x55",
"\x76" => "\x56",
"\x77" => "\x57",
"\x78" => "\x58",
"\x79" => "\x59",
"\x7A" => "\x5A",
"\xC2\xB5" => "\xCE\x9C",
"\xC3\x9F" => "\x53\x53",
"\xC3\xA0" => "\xC3\x80",
"\xC3\xA1" => "\xC3\x81",
"\xC3\xA2" => "\xC3\x82",
"\xC3\xA3" => "\xC3\x83",
"\xC3\xA4" => "\xC3\x84",
"\xC3\xA5" => "\xC3\x85",
"\xC3\xA6" => "\xC3\x86",
"\xC3\xA7" => "\xC3\x87",
"\xC3\xA8" => "\xC3\x88",
"\xC3\xA9" => "\xC3\x89",
"\xC3\xAA" => "\xC3\x8A",
"\xC3\xAB" => "\xC3\x8B",
"\xC3\xAC" => "\xC3\x8C",
"\xC3\xAD" => "\xC3\x8D",
"\xC3\xAE" => "\xC3\x8E",
"\xC3\xAF" => "\xC3\x8F",
"\xC3\xB0" => "\xC3\x90",
"\xC3\xB1" => "\xC3\x91",
"\xC3\xB2" => "\xC3\x92",
"\xC3\xB3" => "\xC3\x93",
"\xC3\xB4" => "\xC3\x94",
"\xC3\xB5" => "\xC3\x95",
"\xC3\xB6" => "\xC3\x96",
"\xC3\xB8" => "\xC3\x98",
"\xC3\xB9" => "\xC3\x99",
"\xC3\xBA" => "\xC3\x9A",
"\xC3\xBB" => "\xC3\x9B",
"\xC3\xBC" => "\xC3\x9C",
"\xC3\xBD" => "\xC3\x9D",
"\xC3\xBE" => "\xC3\x9E",
"\xC3\xBF" => "\xC5\xB8",
"\xC4\x81" => "\xC4\x80",
"\xC4\x83" => "\xC4\x82",
"\xC4\x85" => "\xC4\x84",
"\xC4\x87" => "\xC4\x86",
"\xC4\x89" => "\xC4\x88",
"\xC4\x8B" => "\xC4\x8A",
"\xC4\x8D" => "\xC4\x8C",
"\xC4\x8F" => "\xC4\x8E",
"\xC4\x91" => "\xC4\x90",
"\xC4\x93" => "\xC4\x92",
"\xC4\x95" => "\xC4\x94",
"\xC4\x97" => "\xC4\x96",
"\xC4\x99" => "\xC4\x98",
"\xC4\x9B" => "\xC4\x9A",
"\xC4\x9D" => "\xC4\x9C",
"\xC4\x9F" => "\xC4\x9E",
"\xC4\xA1" => "\xC4\xA0",
"\xC4\xA3" => "\xC4\xA2",
"\xC4\xA5" => "\xC4\xA4",
"\xC4\xA7" => "\xC4\xA6",
"\xC4\xA9" => "\xC4\xA8",
"\xC4\xAB" => "\xC4\xAA",
"\xC4\xAD" => "\xC4\xAC",
"\xC4\xAF" => "\xC4\xAE",
"\xC4\xB0" => "\xC4\xB0",
"\xC4\xB1" => "\x49",
"\xC4\xB3" => "\xC4\xB2",
"\xC4\xB5" => "\xC4\xB4",
"\xC4\xB7" => "\xC4\xB6",
"\xC4\xBA" => "\xC4\xB9",
"\xC4\xBC" => "\xC4\xBB",
"\xC4\xBE" => "\xC4\xBD",
"\xC5\x80" => "\xC4\xBF",
"\xC5\x82" => "\xC5\x81",
"\xC5\x84" => "\xC5\x83",
"\xC5\x86" => "\xC5\x85",
"\xC5\x88" => "\xC5\x87",
"\xC5\x89" => "\xCA\xBC\x4E",
"\xC5\x8B" => "\xC5\x8A",
"\xC5\x8D" => "\xC5\x8C",
"\xC5\x8F" => "\xC5\x8E",
"\xC5\x91" => "\xC5\x90",
"\xC5\x93" => "\xC5\x92",
"\xC5\x95" => "\xC5\x94",
"\xC5\x97" => "\xC5\x96",
"\xC5\x99" => "\xC5\x98",
"\xC5\x9B" => "\xC5\x9A",
"\xC5\x9D" => "\xC5\x9C",
"\xC5\x9F" => "\xC5\x9E",
"\xC5\xA1" => "\xC5\xA0",
"\xC5\xA3" => "\xC5\xA2",
"\xC5\xA5" => "\xC5\xA4",
"\xC5\xA7" => "\xC5\xA6",
"\xC5\xA9" => "\xC5\xA8",
"\xC5\xAB" => "\xC5\xAA",
"\xC5\xAD" => "\xC5\xAC",
"\xC5\xAF" => "\xC5\xAE",
"\xC5\xB1" => "\xC5\xB0",
"\xC5\xB3" => "\xC5\xB2",
"\xC5\xB5" => "\xC5\xB4",
"\xC5\xB7" => "\xC5\xB6",
"\xC5\xBA" => "\xC5\xB9",
"\xC5\xBC" => "\xC5\xBB",
"\xC5\xBE" => "\xC5\xBD",
"\xC5\xBF" => "\x53",
"\xC6\x80" => "\xC9\x83",
"\xC6\x83" => "\xC6\x82",
"\xC6\x85" => "\xC6\x84",
"\xC6\x88" => "\xC6\x87",
"\xC6\x8C" => "\xC6\x8B",
"\xC6\x92" => "\xC6\x91",
"\xC6\x95" => "\xC7\xB6",
"\xC6\x99" => "\xC6\x98",
"\xC6\x9A" => "\xC8\xBD",
"\xC6\x9E" => "\xC8\xA0",
"\xC6\xA1" => "\xC6\xA0",
"\xC6\xA3" => "\xC6\xA2",
"\xC6\xA5" => "\xC6\xA4",
"\xC6\xA8" => "\xC6\xA7",
"\xC6\xAD" => "\xC6\xAC",
"\xC6\xB0" => "\xC6\xAF",
"\xC6\xB4" => "\xC6\xB3",
"\xC6\xB6" => "\xC6\xB5",
"\xC6\xB9" => "\xC6\xB8",
"\xC6\xBD" => "\xC6\xBC",
"\xC6\xBF" => "\xC7\xB7",
"\xC7\x85" => "\xC7\x84",
"\xC7\x86" => "\xC7\x84",
"\xC7\x88" => "\xC7\x87",
"\xC7\x89" => "\xC7\x87",
"\xC7\x8B" => "\xC7\x8A",
"\xC7\x8C" => "\xC7\x8A",
"\xC7\x8E" => "\xC7\x8D",
"\xC7\x90" => "\xC7\x8F",
"\xC7\x92" => "\xC7\x91",
"\xC7\x94" => "\xC7\x93",
"\xC7\x96" => "\xC7\x95",
"\xC7\x98" => "\xC7\x97",
"\xC7\x9A" => "\xC7\x99",
"\xC7\x9C" => "\xC7\x9B",
"\xC7\x9D" => "\xC6\x8E",
"\xC7\x9F" => "\xC7\x9E",
"\xC7\xA1" => "\xC7\xA0",
"\xC7\xA3" => "\xC7\xA2",
"\xC7\xA5" => "\xC7\xA4",
"\xC7\xA7" => "\xC7\xA6",
"\xC7\xA9" => "\xC7\xA8",
"\xC7\xAB" => "\xC7\xAA",
"\xC7\xAD" => "\xC7\xAC",
"\xC7\xAF" => "\xC7\xAE",
"\xC7\xB0" => "\x4A\xCC\x8C",
"\xC7\xB2" => "\xC7\xB1",
"\xC7\xB3" => "\xC7\xB1",
"\xC7\xB5" => "\xC7\xB4",
"\xC7\xB9" => "\xC7\xB8",
"\xC7\xBB" => "\xC7\xBA",
"\xC7\xBD" => "\xC7\xBC",
"\xC7\xBF" => "\xC7\xBE",
"\xC8\x81" => "\xC8\x80",
"\xC8\x83" => "\xC8\x82",
"\xC8\x85" => "\xC8\x84",
"\xC8\x87" => "\xC8\x86",
"\xC8\x89" => "\xC8\x88",
"\xC8\x8B" => "\xC8\x8A",
"\xC8\x8D" => "\xC8\x8C",
"\xC8\x8F" => "\xC8\x8E",
"\xC8\x91" => "\xC8\x90",
"\xC8\x93" => "\xC8\x92",
"\xC8\x95" => "\xC8\x94",
"\xC8\x97" => "\xC8\x96",
"\xC8\x99" => "\xC8\x98",
"\xC8\x9B" => "\xC8\x9A",
"\xC8\x9D" => "\xC8\x9C",
"\xC8\x9F" => "\xC8\x9E",
"\xC8\xA3" => "\xC8\xA2",
"\xC8\xA5" => "\xC8\xA4",
"\xC8\xA7" => "\xC8\xA6",
"\xC8\xA9" => "\xC8\xA8",
"\xC8\xAB" => "\xC8\xAA",
"\xC8\xAD" => "\xC8\xAC",
"\xC8\xAF" => "\xC8\xAE",
"\xC8\xB1" => "\xC8\xB0",
"\xC8\xB3" => "\xC8\xB2",
"\xC8\xBC" => "\xC8\xBB",
"\xC8\xBF" => "\xE2\xB1\xBE",
"\xC9\x80" => "\xE2\xB1\xBF",
"\xC9\x82" => "\xC9\x81",
"\xC9\x87" => "\xC9\x86",
"\xC9\x89" => "\xC9\x88",
"\xC9\x8B" => "\xC9\x8A",
"\xC9\x8D" => "\xC9\x8C",
"\xC9\x8F" => "\xC9\x8E",
"\xC9\x90" => "\xE2\xB1\xAF",
"\xC9\x91" => "\xE2\xB1\xAD",
"\xC9\x92" => "\xE2\xB1\xB0",
"\xC9\x93" => "\xC6\x81",
"\xC9\x94" => "\xC6\x86",
"\xC9\x96" => "\xC6\x89",
"\xC9\x97" => "\xC6\x8A",
"\xC9\x99" => "\xC6\x8F",
"\xC9\x9B" => "\xC6\x90",
"\xC9\x9C" => "\xEA\x9E\xAB",
"\xC9\xA0" => "\xC6\x93",
"\xC9\xA1" => "\xEA\x9E\xAC",
"\xC9\xA3" => "\xC6\x94",
"\xC9\xA5" => "\xEA\x9E\x8D",
"\xC9\xA6" => "\xEA\x9E\xAA",
"\xC9\xA8" => "\xC6\x97",
"\xC9\xA9" => "\xC6\x96",
"\xC9\xAA" => "\xEA\x9E\xAE",
"\xC9\xAB" => "\xE2\xB1\xA2",
"\xC9\xAC" => "\xEA\x9E\xAD",
"\xC9\xAF" => "\xC6\x9C",
"\xC9\xB1" => "\xE2\xB1\xAE",
"\xC9\xB2" => "\xC6\x9D",
"\xC9\xB5" => "\xC6\x9F",
"\xC9\xBD" => "\xE2\xB1\xA4",
"\xCA\x80" => "\xC6\xA6",
"\xCA\x82" => "\xEA\x9F\x85",
"\xCA\x83" => "\xC6\xA9",
"\xCA\x87" => "\xEA\x9E\xB1",
"\xCA\x88" => "\xC6\xAE",
"\xCA\x89" => "\xC9\x84",
"\xCA\x8A" => "\xC6\xB1",
"\xCA\x8B" => "\xC6\xB2",
"\xCA\x8C" => "\xC9\x85",
"\xCA\x92" => "\xC6\xB7",
"\xCA\x9D" => "\xEA\x9E\xB2",
"\xCA\x9E" => "\xEA\x9E\xB0",
"\xCD\x85" => "\xCE\x99",
"\xCD\xB1" => "\xCD\xB0",
"\xCD\xB3" => "\xCD\xB2",
"\xCD\xB7" => "\xCD\xB6",
"\xCD\xBB" => "\xCF\xBD",
"\xCD\xBC" => "\xCF\xBE",
"\xCD\xBD" => "\xCF\xBF",
"\xCE\x90" => "\xCE\x99\xCC\x88\xCC\x81",
"\xCE\xAC" => "\xCE\x86",
"\xCE\xAD" => "\xCE\x88",
"\xCE\xAE" => "\xCE\x89",
"\xCE\xAF" => "\xCE\x8A",
"\xCE\xB0" => "\xCE\xA5\xCC\x88\xCC\x81",
"\xCE\xB1" => "\xCE\x91",
"\xCE\xB2" => "\xCE\x92",
"\xCE\xB3" => "\xCE\x93",
"\xCE\xB4" => "\xCE\x94",
"\xCE\xB5" => "\xCE\x95",
"\xCE\xB6" => "\xCE\x96",
"\xCE\xB7" => "\xCE\x97",
"\xCE\xB8" => "\xCE\x98",
"\xCE\xB9" => "\xCE\x99",
"\xCE\xBA" => "\xCE\x9A",
"\xCE\xBB" => "\xCE\x9B",
"\xCE\xBC" => "\xCE\x9C",
"\xCE\xBD" => "\xCE\x9D",
"\xCE\xBE" => "\xCE\x9E",
"\xCE\xBF" => "\xCE\x9F",
"\xCF\x80" => "\xCE\xA0",
"\xCF\x81" => "\xCE\xA1",
"\xCF\x82" => "\xCE\xA3",
"\xCF\x83" => "\xCE\xA3",
"\xCF\x84" => "\xCE\xA4",
"\xCF\x85" => "\xCE\xA5",
"\xCF\x86" => "\xCE\xA6",
"\xCF\x87" => "\xCE\xA7",
"\xCF\x88" => "\xCE\xA8",
"\xCF\x89" => "\xCE\xA9",
"\xCF\x8A" => "\xCE\xAA",
"\xCF\x8B" => "\xCE\xAB",
"\xCF\x8C" => "\xCE\x8C",
"\xCF\x8D" => "\xCE\x8E",
"\xCF\x8E" => "\xCE\x8F",
"\xCF\x90" => "\xCE\x92",
"\xCF\x91" => "\xCE\x98",
"\xCF\x95" => "\xCE\xA6",
"\xCF\x96" => "\xCE\xA0",
"\xCF\x97" => "\xCF\x8F",
"\xCF\x99" => "\xCF\x98",
"\xCF\x9B" => "\xCF\x9A",
"\xCF\x9D" => "\xCF\x9C",
"\xCF\x9F" => "\xCF\x9E",
"\xCF\xA1" => "\xCF\xA0",
"\xCF\xA3" => "\xCF\xA2",
"\xCF\xA5" => "\xCF\xA4",
"\xCF\xA7" => "\xCF\xA6",
"\xCF\xA9" => "\xCF\xA8",
"\xCF\xAB" => "\xCF\xAA",
"\xCF\xAD" => "\xCF\xAC",
"\xCF\xAF" => "\xCF\xAE",
"\xCF\xB0" => "\xCE\x9A",
"\xCF\xB1" => "\xCE\xA1",
"\xCF\xB2" => "\xCF\xB9",
"\xCF\xB3" => "\xCD\xBF",
"\xCF\xB5" => "\xCE\x95",
"\xCF\xB8" => "\xCF\xB7",
"\xCF\xBB" => "\xCF\xBA",
"\xD0\xB0" => "\xD0\x90",
"\xD0\xB1" => "\xD0\x91",
"\xD0\xB2" => "\xD0\x92",
"\xD0\xB3" => "\xD0\x93",
"\xD0\xB4" => "\xD0\x94",
"\xD0\xB5" => "\xD0\x95",
"\xD0\xB6" => "\xD0\x96",
"\xD0\xB7" => "\xD0\x97",
"\xD0\xB8" => "\xD0\x98",
"\xD0\xB9" => "\xD0\x99",
"\xD0\xBA" => "\xD0\x9A",
"\xD0\xBB" => "\xD0\x9B",
"\xD0\xBC" => "\xD0\x9C",
"\xD0\xBD" => "\xD0\x9D",
"\xD0\xBE" => "\xD0\x9E",
"\xD0\xBF" => "\xD0\x9F",
"\xD1\x80" => "\xD0\xA0",
"\xD1\x81" => "\xD0\xA1",
"\xD1\x82" => "\xD0\xA2",
"\xD1\x83" => "\xD0\xA3",
"\xD1\x84" => "\xD0\xA4",
"\xD1\x85" => "\xD0\xA5",
"\xD1\x86" => "\xD0\xA6",
"\xD1\x87" => "\xD0\xA7",
"\xD1\x88" => "\xD0\xA8",
"\xD1\x89" => "\xD0\xA9",
"\xD1\x8A" => "\xD0\xAA",
"\xD1\x8B" => "\xD0\xAB",
"\xD1\x8C" => "\xD0\xAC",
"\xD1\x8D" => "\xD0\xAD",
"\xD1\x8E" => "\xD0\xAE",
"\xD1\x8F" => "\xD0\xAF",
"\xD1\x90" => "\xD0\x80",
"\xD1\x91" => "\xD0\x81",
"\xD1\x92" => "\xD0\x82",
"\xD1\x93" => "\xD0\x83",
"\xD1\x94" => "\xD0\x84",
"\xD1\x95" => "\xD0\x85",
"\xD1\x96" => "\xD0\x86",
"\xD1\x97" => "\xD0\x87",
"\xD1\x98" => "\xD0\x88",
"\xD1\x99" => "\xD0\x89",
"\xD1\x9A" => "\xD0\x8A",
"\xD1\x9B" => "\xD0\x8B",
"\xD1\x9C" => "\xD0\x8C",
"\xD1\x9D" => "\xD0\x8D",
"\xD1\x9E" => "\xD0\x8E",
"\xD1\x9F" => "\xD0\x8F",
"\xD1\xA1" => "\xD1\xA0",
"\xD1\xA3" => "\xD1\xA2",
"\xD1\xA5" => "\xD1\xA4",
"\xD1\xA7" => "\xD1\xA6",
"\xD1\xA9" => "\xD1\xA8",
"\xD1\xAB" => "\xD1\xAA",
"\xD1\xAD" => "\xD1\xAC",
"\xD1\xAF" => "\xD1\xAE",
"\xD1\xB1" => "\xD1\xB0",
"\xD1\xB3" => "\xD1\xB2",
"\xD1\xB5" => "\xD1\xB4",
"\xD1\xB7" => "\xD1\xB6",
"\xD1\xB9" => "\xD1\xB8",
"\xD1\xBB" => "\xD1\xBA",
"\xD1\xBD" => "\xD1\xBC",
"\xD1\xBF" => "\xD1\xBE",
"\xD2\x81" => "\xD2\x80",
"\xD2\x8B" => "\xD2\x8A",
"\xD2\x8D" => "\xD2\x8C",
"\xD2\x8F" => "\xD2\x8E",
"\xD2\x91" => "\xD2\x90",
"\xD2\x93" => "\xD2\x92",
"\xD2\x95" => "\xD2\x94",
"\xD2\x97" => "\xD2\x96",
"\xD2\x99" => "\xD2\x98",
"\xD2\x9B" => "\xD2\x9A",
"\xD2\x9D" => "\xD2\x9C",
"\xD2\x9F" => "\xD2\x9E",
"\xD2\xA1" => "\xD2\xA0",
"\xD2\xA3" => "\xD2\xA2",
"\xD2\xA5" => "\xD2\xA4",
"\xD2\xA7" => "\xD2\xA6",
"\xD2\xA9" => "\xD2\xA8",
"\xD2\xAB" => "\xD2\xAA",
"\xD2\xAD" => "\xD2\xAC",
"\xD2\xAF" => "\xD2\xAE",
"\xD2\xB1" => "\xD2\xB0",
"\xD2\xB3" => "\xD2\xB2",
"\xD2\xB5" => "\xD2\xB4",
"\xD2\xB7" => "\xD2\xB6",
"\xD2\xB9" => "\xD2\xB8",
"\xD2\xBB" => "\xD2\xBA",
"\xD2\xBD" => "\xD2\xBC",
"\xD2\xBF" => "\xD2\xBE",
"\xD3\x82" => "\xD3\x81",
"\xD3\x84" => "\xD3\x83",
"\xD3\x86" => "\xD3\x85",
"\xD3\x88" => "\xD3\x87",
"\xD3\x8A" => "\xD3\x89",
"\xD3\x8C" => "\xD3\x8B",
"\xD3\x8E" => "\xD3\x8D",
"\xD3\x8F" => "\xD3\x80",
"\xD3\x91" => "\xD3\x90",
"\xD3\x93" => "\xD3\x92",
"\xD3\x95" => "\xD3\x94",
"\xD3\x97" => "\xD3\x96",
"\xD3\x99" => "\xD3\x98",
"\xD3\x9B" => "\xD3\x9A",
"\xD3\x9D" => "\xD3\x9C",
"\xD3\x9F" => "\xD3\x9E",
"\xD3\xA1" => "\xD3\xA0",
"\xD3\xA3" => "\xD3\xA2",
"\xD3\xA5" => "\xD3\xA4",
"\xD3\xA7" => "\xD3\xA6",
"\xD3\xA9" => "\xD3\xA8",
"\xD3\xAB" => "\xD3\xAA",
"\xD3\xAD" => "\xD3\xAC",
"\xD3\xAF" => "\xD3\xAE",
"\xD3\xB1" => "\xD3\xB0",
"\xD3\xB3" => "\xD3\xB2",
"\xD3\xB5" => "\xD3\xB4",
"\xD3\xB7" => "\xD3\xB6",
"\xD3\xB9" => "\xD3\xB8",
"\xD3\xBB" => "\xD3\xBA",
"\xD3\xBD" => "\xD3\xBC",
"\xD3\xBF" => "\xD3\xBE",
"\xD4\x81" => "\xD4\x80",
"\xD4\x83" => "\xD4\x82",
"\xD4\x85" => "\xD4\x84",
"\xD4\x87" => "\xD4\x86",
"\xD4\x89" => "\xD4\x88",
"\xD4\x8B" => "\xD4\x8A",
"\xD4\x8D" => "\xD4\x8C",
"\xD4\x8F" => "\xD4\x8E",
"\xD4\x91" => "\xD4\x90",
"\xD4\x93" => "\xD4\x92",
"\xD4\x95" => "\xD4\x94",
"\xD4\x97" => "\xD4\x96",
"\xD4\x99" => "\xD4\x98",
"\xD4\x9B" => "\xD4\x9A",
"\xD4\x9D" => "\xD4\x9C",
"\xD4\x9F" => "\xD4\x9E",
"\xD4\xA1" => "\xD4\xA0",
"\xD4\xA3" => "\xD4\xA2",
"\xD4\xA5" => "\xD4\xA4",
"\xD4\xA7" => "\xD4\xA6",
"\xD4\xA9" => "\xD4\xA8",
"\xD4\xAB" => "\xD4\xAA",
"\xD4\xAD" => "\xD4\xAC",
"\xD4\xAF" => "\xD4\xAE",
"\xD5\xA1" => "\xD4\xB1",
"\xD5\xA2" => "\xD4\xB2",
"\xD5\xA3" => "\xD4\xB3",
"\xD5\xA4" => "\xD4\xB4",
"\xD5\xA5" => "\xD4\xB5",
"\xD5\xA6" => "\xD4\xB6",
"\xD5\xA7" => "\xD4\xB7",
"\xD5\xA8" => "\xD4\xB8",
"\xD5\xA9" => "\xD4\xB9",
"\xD5\xAA" => "\xD4\xBA",
"\xD5\xAB" => "\xD4\xBB",
"\xD5\xAC" => "\xD4\xBC",
"\xD5\xAD" => "\xD4\xBD",
"\xD5\xAE" => "\xD4\xBE",
"\xD5\xAF" => "\xD4\xBF",
"\xD5\xB0" => "\xD5\x80",
"\xD5\xB1" => "\xD5\x81",
"\xD5\xB2" => "\xD5\x82",
"\xD5\xB3" => "\xD5\x83",
"\xD5\xB4" => "\xD5\x84",
"\xD5\xB5" => "\xD5\x85",
"\xD5\xB6" => "\xD5\x86",
"\xD5\xB7" => "\xD5\x87",
"\xD5\xB8" => "\xD5\x88",
"\xD5\xB9" => "\xD5\x89",
"\xD5\xBA" => "\xD5\x8A",
"\xD5\xBB" => "\xD5\x8B",
"\xD5\xBC" => "\xD5\x8C",
"\xD5\xBD" => "\xD5\x8D",
"\xD5\xBE" => "\xD5\x8E",
"\xD5\xBF" => "\xD5\x8F",
"\xD6\x80" => "\xD5\x90",
"\xD6\x81" => "\xD5\x91",
"\xD6\x82" => "\xD5\x92",
"\xD6\x83" => "\xD5\x93",
"\xD6\x84" => "\xD5\x94",
"\xD6\x85" => "\xD5\x95",
"\xD6\x86" => "\xD5\x96",
"\xD6\x87" => "\xD4\xB5\xD5\x92",
"\xF0\x90\x90\xA8" => "\xF0\x90\x90\x80",
"\xF0\x90\x90\xA9" => "\xF0\x90\x90\x81",
"\xF0\x90\x90\xAA" => "\xF0\x90\x90\x82",
"\xF0\x90\x90\xAB" => "\xF0\x90\x90\x83",
"\xF0\x90\x90\xAC" => "\xF0\x90\x90\x84",
"\xF0\x90\x90\xAD" => "\xF0\x90\x90\x85",
"\xF0\x90\x90\xAE" => "\xF0\x90\x90\x86",
"\xF0\x90\x90\xAF" => "\xF0\x90\x90\x87",
"\xF0\x90\x90\xB0" => "\xF0\x90\x90\x88",
"\xF0\x90\x90\xB1" => "\xF0\x90\x90\x89",
"\xF0\x90\x90\xB2" => "\xF0\x90\x90\x8A",
"\xF0\x90\x90\xB3" => "\xF0\x90\x90\x8B",
"\xF0\x90\x90\xB4" => "\xF0\x90\x90\x8C",
"\xF0\x90\x90\xB5" => "\xF0\x90\x90\x8D",
"\xF0\x90\x90\xB6" => "\xF0\x90\x90\x8E",
"\xF0\x90\x90\xB7" => "\xF0\x90\x90\x8F",
"\xF0\x90\x90\xB8" => "\xF0\x90\x90\x90",
"\xF0\x90\x90\xB9" => "\xF0\x90\x90\x91",
"\xF0\x90\x90\xBA" => "\xF0\x90\x90\x92",
"\xF0\x90\x90\xBB" => "\xF0\x90\x90\x93",
"\xF0\x90\x90\xBC" => "\xF0\x90\x90\x94",
"\xF0\x90\x90\xBD" => "\xF0\x90\x90\x95",
"\xF0\x90\x90\xBE" => "\xF0\x90\x90\x96",
"\xF0\x90\x90\xBF" => "\xF0\x90\x90\x97",
"\xF0\x90\x91\x80" => "\xF0\x90\x90\x98",
"\xF0\x90\x91\x81" => "\xF0\x90\x90\x99",
"\xF0\x90\x91\x82" => "\xF0\x90\x90\x9A",
"\xF0\x90\x91\x83" => "\xF0\x90\x90\x9B",
"\xF0\x90\x91\x84" => "\xF0\x90\x90\x9C",
"\xF0\x90\x91\x85" => "\xF0\x90\x90\x9D",
"\xF0\x90\x91\x86" => "\xF0\x90\x90\x9E",
"\xF0\x90\x91\x87" => "\xF0\x90\x90\x9F",
"\xF0\x90\x91\x88" => "\xF0\x90\x90\xA0",
"\xF0\x90\x91\x89" => "\xF0\x90\x90\xA1",
"\xF0\x90\x91\x8A" => "\xF0\x90\x90\xA2",
"\xF0\x90\x91\x8B" => "\xF0\x90\x90\xA3",
"\xF0\x90\x91\x8C" => "\xF0\x90\x90\xA4",
"\xF0\x90\x91\x8D" => "\xF0\x90\x90\xA5",
"\xF0\x90\x91\x8E" => "\xF0\x90\x90\xA6",
"\xF0\x90\x91\x8F" => "\xF0\x90\x90\xA7",
"\xF0\x90\x93\x98" => "\xF0\x90\x92\xB0",
"\xF0\x90\x93\x99" => "\xF0\x90\x92\xB1",
"\xF0\x90\x93\x9A" => "\xF0\x90\x92\xB2",
"\xF0\x90\x93\x9B" => "\xF0\x90\x92\xB3",
"\xF0\x90\x93\x9C" => "\xF0\x90\x92\xB4",
"\xF0\x90\x93\x9D" => "\xF0\x90\x92\xB5",
"\xF0\x90\x93\x9E" => "\xF0\x90\x92\xB6",
"\xF0\x90\x93\x9F" => "\xF0\x90\x92\xB7",
"\xF0\x90\x93\xA0" => "\xF0\x90\x92\xB8",
"\xF0\x90\x93\xA1" => "\xF0\x90\x92\xB9",
"\xF0\x90\x93\xA2" => "\xF0\x90\x92\xBA",
"\xF0\x90\x93\xA3" => "\xF0\x90\x92\xBB",
"\xF0\x90\x93\xA4" => "\xF0\x90\x92\xBC",
"\xF0\x90\x93\xA5" => "\xF0\x90\x92\xBD",
"\xF0\x90\x93\xA6" => "\xF0\x90\x92\xBE",
"\xF0\x90\x93\xA7" => "\xF0\x90\x92\xBF",
"\xF0\x90\x93\xA8" => "\xF0\x90\x93\x80",
"\xF0\x90\x93\xA9" => "\xF0\x90\x93\x81",
"\xF0\x90\x93\xAA" => "\xF0\x90\x93\x82",
"\xF0\x90\x93\xAB" => "\xF0\x90\x93\x83",
"\xF0\x90\x93\xAC" => "\xF0\x90\x93\x84",
"\xF0\x90\x93\xAD" => "\xF0\x90\x93\x85",
"\xF0\x90\x93\xAE" => "\xF0\x90\x93\x86",
"\xF0\x90\x93\xAF" => "\xF0\x90\x93\x87",
"\xF0\x90\x93\xB0" => "\xF0\x90\x93\x88",
"\xF0\x90\x93\xB1" => "\xF0\x90\x93\x89",
"\xF0\x90\x93\xB2" => "\xF0\x90\x93\x8A",
"\xF0\x90\x93\xB3" => "\xF0\x90\x93\x8B",
"\xF0\x90\x93\xB4" => "\xF0\x90\x93\x8C",
"\xF0\x90\x93\xB5" => "\xF0\x90\x93\x8D",
"\xF0\x90\x93\xB6" => "\xF0\x90\x93\x8E",
"\xF0\x90\x93\xB7" => "\xF0\x90\x93\x8F",
"\xF0\x90\x93\xB8" => "\xF0\x90\x93\x90",
"\xF0\x90\x93\xB9" => "\xF0\x90\x93\x91",
"\xF0\x90\x93\xBA" => "\xF0\x90\x93\x92",
"\xF0\x90\x93\xBB" => "\xF0\x90\x93\x93",
"\xF0\x90\x96\x97" => "\xF0\x90\x95\xB0",
"\xF0\x90\x96\x98" => "\xF0\x90\x95\xB1",
"\xF0\x90\x96\x99" => "\xF0\x90\x95\xB2",
"\xF0\x90\x96\x9A" => "\xF0\x90\x95\xB3",
"\xF0\x90\x96\x9B" => "\xF0\x90\x95\xB4",
"\xF0\x90\x96\x9C" => "\xF0\x90\x95\xB5",
"\xF0\x90\x96\x9D" => "\xF0\x90\x95\xB6",
"\xF0\x90\x96\x9E" => "\xF0\x90\x95\xB7",
"\xF0\x90\x96\x9F" => "\xF0\x90\x95\xB8",
"\xF0\x90\x96\xA0" => "\xF0\x90\x95\xB9",
"\xF0\x90\x96\xA1" => "\xF0\x90\x95\xBA",
"\xF0\x90\x96\xA3" => "\xF0\x90\x95\xBC",
"\xF0\x90\x96\xA4" => "\xF0\x90\x95\xBD",
"\xF0\x90\x96\xA5" => "\xF0\x90\x95\xBE",
"\xF0\x90\x96\xA6" => "\xF0\x90\x95\xBF",
"\xF0\x90\x96\xA7" => "\xF0\x90\x96\x80",
"\xF0\x90\x96\xA8" => "\xF0\x90\x96\x81",
"\xF0\x90\x96\xA9" => "\xF0\x90\x96\x82",
"\xF0\x90\x96\xAA" => "\xF0\x90\x96\x83",
"\xF0\x90\x96\xAB" => "\xF0\x90\x96\x84",
"\xF0\x90\x96\xAC" => "\xF0\x90\x96\x85",
"\xF0\x90\x96\xAD" => "\xF0\x90\x96\x86",
"\xF0\x90\x96\xAE" => "\xF0\x90\x96\x87",
"\xF0\x90\x96\xAF" => "\xF0\x90\x96\x88",
"\xF0\x90\x96\xB0" => "\xF0\x90\x96\x89",
"\xF0\x90\x96\xB1" => "\xF0\x90\x96\x8A",
"\xF0\x90\x96\xB3" => "\xF0\x90\x96\x8C",
"\xF0\x90\x96\xB4" => "\xF0\x90\x96\x8D",
"\xF0\x90\x96\xB5" => "\xF0\x90\x96\x8E",
"\xF0\x90\x96\xB6" => "\xF0\x90\x96\x8F",
"\xF0\x90\x96\xB7" => "\xF0\x90\x96\x90",
"\xF0\x90\x96\xB8" => "\xF0\x90\x96\x91",
"\xF0\x90\x96\xB9" => "\xF0\x90\x96\x92",
"\xF0\x90\x96\xBB" => "\xF0\x90\x96\x94",
"\xF0\x90\x96\xBC" => "\xF0\x90\x96\x95",
"\xF0\x90\xB3\x80" => "\xF0\x90\xB2\x80",
"\xF0\x90\xB3\x81" => "\xF0\x90\xB2\x81",
"\xF0\x90\xB3\x82" => "\xF0\x90\xB2\x82",
"\xF0\x90\xB3\x83" => "\xF0\x90\xB2\x83",
"\xF0\x90\xB3\x84" => "\xF0\x90\xB2\x84",
"\xF0\x90\xB3\x85" => "\xF0\x90\xB2\x85",
"\xF0\x90\xB3\x86" => "\xF0\x90\xB2\x86",
"\xF0\x90\xB3\x87" => "\xF0\x90\xB2\x87",
"\xF0\x90\xB3\x88" => "\xF0\x90\xB2\x88",
"\xF0\x90\xB3\x89" => "\xF0\x90\xB2\x89",
"\xF0\x90\xB3\x8A" => "\xF0\x90\xB2\x8A",
"\xF0\x90\xB3\x8B" => "\xF0\x90\xB2\x8B",
"\xF0\x90\xB3\x8C" => "\xF0\x90\xB2\x8C",
"\xF0\x90\xB3\x8D" => "\xF0\x90\xB2\x8D",
"\xF0\x90\xB3\x8E" => "\xF0\x90\xB2\x8E",
"\xF0\x90\xB3\x8F" => "\xF0\x90\xB2\x8F",
"\xF0\x90\xB3\x90" => "\xF0\x90\xB2\x90",
"\xF0\x90\xB3\x91" => "\xF0\x90\xB2\x91",
"\xF0\x90\xB3\x92" => "\xF0\x90\xB2\x92",
"\xF0\x90\xB3\x93" => "\xF0\x90\xB2\x93",
"\xF0\x90\xB3\x94" => "\xF0\x90\xB2\x94",
"\xF0\x90\xB3\x95" => "\xF0\x90\xB2\x95",
"\xF0\x90\xB3\x96" => "\xF0\x90\xB2\x96",
"\xF0\x90\xB3\x97" => "\xF0\x90\xB2\x97",
"\xF0\x90\xB3\x98" => "\xF0\x90\xB2\x98",
"\xF0\x90\xB3\x99" => "\xF0\x90\xB2\x99",
"\xF0\x90\xB3\x9A" => "\xF0\x90\xB2\x9A",
"\xF0\x90\xB3\x9B" => "\xF0\x90\xB2\x9B",
"\xF0\x90\xB3\x9C" => "\xF0\x90\xB2\x9C",
"\xF0\x90\xB3\x9D" => "\xF0\x90\xB2\x9D",
"\xF0\x90\xB3\x9E" => "\xF0\x90\xB2\x9E",
"\xF0\x90\xB3\x9F" => "\xF0\x90\xB2\x9F",
"\xF0\x90\xB3\xA0" => "\xF0\x90\xB2\xA0",
"\xF0\x90\xB3\xA1" => "\xF0\x90\xB2\xA1",
"\xF0\x90\xB3\xA2" => "\xF0\x90\xB2\xA2",
"\xF0\x90\xB3\xA3" => "\xF0\x90\xB2\xA3",
"\xF0\x90\xB3\xA4" => "\xF0\x90\xB2\xA4",
"\xF0\x90\xB3\xA5" => "\xF0\x90\xB2\xA5",
"\xF0\x90\xB3\xA6" => "\xF0\x90\xB2\xA6",
"\xF0\x90\xB3\xA7" => "\xF0\x90\xB2\xA7",
"\xF0\x90\xB3\xA8" => "\xF0\x90\xB2\xA8",
"\xF0\x90\xB3\xA9" => "\xF0\x90\xB2\xA9",
"\xF0\x90\xB3\xAA" => "\xF0\x90\xB2\xAA",
"\xF0\x90\xB3\xAB" => "\xF0\x90\xB2\xAB",
"\xF0\x90\xB3\xAC" => "\xF0\x90\xB2\xAC",
"\xF0\x90\xB3\xAD" => "\xF0\x90\xB2\xAD",
"\xF0\x90\xB3\xAE" => "\xF0\x90\xB2\xAE",
"\xF0\x90\xB3\xAF" => "\xF0\x90\xB2\xAF",
"\xF0\x90\xB3\xB0" => "\xF0\x90\xB2\xB0",
"\xF0\x90\xB3\xB1" => "\xF0\x90\xB2\xB1",
"\xF0\x90\xB3\xB2" => "\xF0\x90\xB2\xB2",
"\xE1\x83\x90" => "\xE1\xB2\x90",
"\xE1\x83\x91" => "\xE1\xB2\x91",
"\xE1\x83\x92" => "\xE1\xB2\x92",
"\xE1\x83\x93" => "\xE1\xB2\x93",
"\xE1\x83\x94" => "\xE1\xB2\x94",
"\xE1\x83\x95" => "\xE1\xB2\x95",
"\xE1\x83\x96" => "\xE1\xB2\x96",
"\xE1\x83\x97" => "\xE1\xB2\x97",
"\xE1\x83\x98" => "\xE1\xB2\x98",
"\xE1\x83\x99" => "\xE1\xB2\x99",
"\xE1\x83\x9A" => "\xE1\xB2\x9A",
"\xE1\x83\x9B" => "\xE1\xB2\x9B",
"\xE1\x83\x9C" => "\xE1\xB2\x9C",
"\xE1\x83\x9D" => "\xE1\xB2\x9D",
"\xE1\x83\x9E" => "\xE1\xB2\x9E",
"\xE1\x83\x9F" => "\xE1\xB2\x9F",
"\xE1\x83\xA0" => "\xE1\xB2\xA0",
"\xE1\x83\xA1" => "\xE1\xB2\xA1",
"\xE1\x83\xA2" => "\xE1\xB2\xA2",
"\xE1\x83\xA3" => "\xE1\xB2\xA3",
"\xE1\x83\xA4" => "\xE1\xB2\xA4",
"\xE1\x83\xA5" => "\xE1\xB2\xA5",
"\xE1\x83\xA6" => "\xE1\xB2\xA6",
"\xE1\x83\xA7" => "\xE1\xB2\xA7",
"\xE1\x83\xA8" => "\xE1\xB2\xA8",
"\xE1\x83\xA9" => "\xE1\xB2\xA9",
"\xE1\x83\xAA" => "\xE1\xB2\xAA",
"\xE1\x83\xAB" => "\xE1\xB2\xAB",
"\xE1\x83\xAC" => "\xE1\xB2\xAC",
"\xE1\x83\xAD" => "\xE1\xB2\xAD",
"\xE1\x83\xAE" => "\xE1\xB2\xAE",
"\xE1\x83\xAF" => "\xE1\xB2\xAF",
"\xE1\x83\xB0" => "\xE1\xB2\xB0",
"\xE1\x83\xB1" => "\xE1\xB2\xB1",
"\xE1\x83\xB2" => "\xE1\xB2\xB2",
"\xE1\x83\xB3" => "\xE1\xB2\xB3",
"\xE1\x83\xB4" => "\xE1\xB2\xB4",
"\xE1\x83\xB5" => "\xE1\xB2\xB5",
"\xE1\x83\xB6" => "\xE1\xB2\xB6",
"\xE1\x83\xB7" => "\xE1\xB2\xB7",
"\xE1\x83\xB8" => "\xE1\xB2\xB8",
"\xE1\x83\xB9" => "\xE1\xB2\xB9",
"\xE1\x83\xBA" => "\xE1\xB2\xBA",
"\xE1\x83\xBD" => "\xE1\xB2\xBD",
"\xE1\x83\xBE" => "\xE1\xB2\xBE",
"\xE1\x83\xBF" => "\xE1\xB2\xBF",
"\xF0\x91\xA3\x80" => "\xF0\x91\xA2\xA0",
"\xF0\x91\xA3\x81" => "\xF0\x91\xA2\xA1",
"\xF0\x91\xA3\x82" => "\xF0\x91\xA2\xA2",
"\xF0\x91\xA3\x83" => "\xF0\x91\xA2\xA3",
"\xF0\x91\xA3\x84" => "\xF0\x91\xA2\xA4",
"\xF0\x91\xA3\x85" => "\xF0\x91\xA2\xA5",
"\xF0\x91\xA3\x86" => "\xF0\x91\xA2\xA6",
"\xF0\x91\xA3\x87" => "\xF0\x91\xA2\xA7",
"\xF0\x91\xA3\x88" => "\xF0\x91\xA2\xA8",
"\xF0\x91\xA3\x89" => "\xF0\x91\xA2\xA9",
"\xF0\x91\xA3\x8A" => "\xF0\x91\xA2\xAA",
"\xF0\x91\xA3\x8B" => "\xF0\x91\xA2\xAB",
"\xF0\x91\xA3\x8C" => "\xF0\x91\xA2\xAC",
"\xF0\x91\xA3\x8D" => "\xF0\x91\xA2\xAD",
"\xF0\x91\xA3\x8E" => "\xF0\x91\xA2\xAE",
"\xF0\x91\xA3\x8F" => "\xF0\x91\xA2\xAF",
"\xF0\x91\xA3\x90" => "\xF0\x91\xA2\xB0",
"\xF0\x91\xA3\x91" => "\xF0\x91\xA2\xB1",
"\xF0\x91\xA3\x92" => "\xF0\x91\xA2\xB2",
"\xF0\x91\xA3\x93" => "\xF0\x91\xA2\xB3",
"\xF0\x91\xA3\x94" => "\xF0\x91\xA2\xB4",
"\xF0\x91\xA3\x95" => "\xF0\x91\xA2\xB5",
"\xF0\x91\xA3\x96" => "\xF0\x91\xA2\xB6",
"\xF0\x91\xA3\x97" => "\xF0\x91\xA2\xB7",
"\xF0\x91\xA3\x98" => "\xF0\x91\xA2\xB8",
"\xF0\x91\xA3\x99" => "\xF0\x91\xA2\xB9",
"\xF0\x91\xA3\x9A" => "\xF0\x91\xA2\xBA",
"\xF0\x91\xA3\x9B" => "\xF0\x91\xA2\xBB",
"\xF0\x91\xA3\x9C" => "\xF0\x91\xA2\xBC",
"\xF0\x91\xA3\x9D" => "\xF0\x91\xA2\xBD",
"\xF0\x91\xA3\x9E" => "\xF0\x91\xA2\xBE",
"\xF0\x91\xA3\x9F" => "\xF0\x91\xA2\xBF",
"\xE1\x8F\xB8" => "\xE1\x8F\xB0",
"\xE1\x8F\xB9" => "\xE1\x8F\xB1",
"\xE1\x8F\xBA" => "\xE1\x8F\xB2",
"\xE1\x8F\xBB" => "\xE1\x8F\xB3",
"\xE1\x8F\xBC" => "\xE1\x8F\xB4",
"\xE1\x8F\xBD" => "\xE1\x8F\xB5",
"\xF0\x96\xB9\xA0" => "\xF0\x96\xB9\x80",
"\xF0\x96\xB9\xA1" => "\xF0\x96\xB9\x81",
"\xF0\x96\xB9\xA2" => "\xF0\x96\xB9\x82",
"\xF0\x96\xB9\xA3" => "\xF0\x96\xB9\x83",
"\xF0\x96\xB9\xA4" => "\xF0\x96\xB9\x84",
"\xF0\x96\xB9\xA5" => "\xF0\x96\xB9\x85",
"\xF0\x96\xB9\xA6" => "\xF0\x96\xB9\x86",
"\xF0\x96\xB9\xA7" => "\xF0\x96\xB9\x87",
"\xF0\x96\xB9\xA8" => "\xF0\x96\xB9\x88",
"\xF0\x96\xB9\xA9" => "\xF0\x96\xB9\x89",
"\xF0\x96\xB9\xAA" => "\xF0\x96\xB9\x8A",
"\xF0\x96\xB9\xAB" => "\xF0\x96\xB9\x8B",
"\xF0\x96\xB9\xAC" => "\xF0\x96\xB9\x8C",
"\xF0\x96\xB9\xAD" => "\xF0\x96\xB9\x8D",
"\xF0\x96\xB9\xAE" => "\xF0\x96\xB9\x8E",
"\xF0\x96\xB9\xAF" => "\xF0\x96\xB9\x8F",
"\xF0\x96\xB9\xB0" => "\xF0\x96\xB9\x90",
"\xF0\x96\xB9\xB1" => "\xF0\x96\xB9\x91",
"\xF0\x96\xB9\xB2" => "\xF0\x96\xB9\x92",
"\xF0\x96\xB9\xB3" => "\xF0\x96\xB9\x93",
"\xF0\x96\xB9\xB4" => "\xF0\x96\xB9\x94",
"\xF0\x96\xB9\xB5" => "\xF0\x96\xB9\x95",
"\xF0\x96\xB9\xB6" => "\xF0\x96\xB9\x96",
"\xF0\x96\xB9\xB7" => "\xF0\x96\xB9\x97",
"\xF0\x96\xB9\xB8" => "\xF0\x96\xB9\x98",
"\xF0\x96\xB9\xB9" => "\xF0\x96\xB9\x99",
"\xF0\x96\xB9\xBA" => "\xF0\x96\xB9\x9A",
"\xF0\x96\xB9\xBB" => "\xF0\x96\xB9\x9B",
"\xF0\x96\xB9\xBC" => "\xF0\x96\xB9\x9C",
"\xF0\x96\xB9\xBD" => "\xF0\x96\xB9\x9D",
"\xF0\x96\xB9\xBE" => "\xF0\x96\xB9\x9E",
"\xF0\x96\xB9\xBF" => "\xF0\x96\xB9\x9F",
Find: Select
?>
Replace With: Select
"\xE1\xB2\x80" => "\xD0\x92",
"\xE1\xB2\x81" => "\xD0\x94",
"\xE1\xB2\x82" => "\xD0\x9E",
"\xE1\xB2\x83" => "\xD0\xA1",
"\xE1\xB2\x84" => "\xD0\xA2",
"\xE1\xB2\x85" => "\xD0\xA2",
"\xE1\xB2\x86" => "\xD0\xAA",
"\xE1\xB2\x87" => "\xD1\xA2",
"\xE1\xB2\x88" => "\xEA\x99\x8A",
"\xE1\xB5\xB9" => "\xEA\x9D\xBD",
"\xE1\xB5\xBD" => "\xE2\xB1\xA3",
"\xE1\xB6\x8E" => "\xEA\x9F\x86",
"\xE1\xB8\x81" => "\xE1\xB8\x80",
"\xE1\xB8\x83" => "\xE1\xB8\x82",
"\xE1\xB8\x85" => "\xE1\xB8\x84",
"\xE1\xB8\x87" => "\xE1\xB8\x86",
"\xE1\xB8\x89" => "\xE1\xB8\x88",
"\xE1\xB8\x8B" => "\xE1\xB8\x8A",
"\xE1\xB8\x8D" => "\xE1\xB8\x8C",
"\xE1\xB8\x8F" => "\xE1\xB8\x8E",
"\xE1\xB8\x91" => "\xE1\xB8\x90",
"\xE1\xB8\x93" => "\xE1\xB8\x92",
"\xE1\xB8\x95" => "\xE1\xB8\x94",
"\xE1\xB8\x97" => "\xE1\xB8\x96",
"\xE1\xB8\x99" => "\xE1\xB8\x98",
"\xE1\xB8\x9B" => "\xE1\xB8\x9A",
"\xE1\xB8\x9D" => "\xE1\xB8\x9C",
"\xE1\xB8\x9F" => "\xE1\xB8\x9E",
"\xE1\xB8\xA1" => "\xE1\xB8\xA0",
"\xE1\xB8\xA3" => "\xE1\xB8\xA2",
"\xE1\xB8\xA5" => "\xE1\xB8\xA4",
"\xE1\xB8\xA7" => "\xE1\xB8\xA6",
"\xE1\xB8\xA9" => "\xE1\xB8\xA8",
"\xE1\xB8\xAB" => "\xE1\xB8\xAA",
"\xE1\xB8\xAD" => "\xE1\xB8\xAC",
"\xE1\xB8\xAF" => "\xE1\xB8\xAE",
"\xE1\xB8\xB1" => "\xE1\xB8\xB0",
"\xE1\xB8\xB3" => "\xE1\xB8\xB2",
"\xE1\xB8\xB5" => "\xE1\xB8\xB4",
"\xE1\xB8\xB7" => "\xE1\xB8\xB6",
"\xE1\xB8\xB9" => "\xE1\xB8\xB8",
"\xE1\xB8\xBB" => "\xE1\xB8\xBA",
"\xE1\xB8\xBD" => "\xE1\xB8\xBC",
"\xE1\xB8\xBF" => "\xE1\xB8\xBE",
"\xE1\xB9\x81" => "\xE1\xB9\x80",
"\xE1\xB9\x83" => "\xE1\xB9\x82",
"\xE1\xB9\x85" => "\xE1\xB9\x84",
"\xE1\xB9\x87" => "\xE1\xB9\x86",
"\xE1\xB9\x89" => "\xE1\xB9\x88",
"\xE1\xB9\x8B" => "\xE1\xB9\x8A",
"\xE1\xB9\x8D" => "\xE1\xB9\x8C",
"\xE1\xB9\x8F" => "\xE1\xB9\x8E",
"\xE1\xB9\x91" => "\xE1\xB9\x90",
"\xE1\xB9\x93" => "\xE1\xB9\x92",
"\xE1\xB9\x95" => "\xE1\xB9\x94",
"\xE1\xB9\x97" => "\xE1\xB9\x96",
"\xE1\xB9\x99" => "\xE1\xB9\x98",
"\xE1\xB9\x9B" => "\xE1\xB9\x9A",
"\xE1\xB9\x9D" => "\xE1\xB9\x9C",
"\xE1\xB9\x9F" => "\xE1\xB9\x9E",
"\xE1\xB9\xA1" => "\xE1\xB9\xA0",
"\xE1\xB9\xA3" => "\xE1\xB9\xA2",
"\xE1\xB9\xA5" => "\xE1\xB9\xA4",
"\xE1\xB9\xA7" => "\xE1\xB9\xA6",
"\xE1\xB9\xA9" => "\xE1\xB9\xA8",
"\xE1\xB9\xAB" => "\xE1\xB9\xAA",
"\xE1\xB9\xAD" => "\xE1\xB9\xAC",
"\xE1\xB9\xAF" => "\xE1\xB9\xAE",
"\xE1\xB9\xB1" => "\xE1\xB9\xB0",
"\xE1\xB9\xB3" => "\xE1\xB9\xB2",
"\xE1\xB9\xB5" => "\xE1\xB9\xB4",
"\xE1\xB9\xB7" => "\xE1\xB9\xB6",
"\xE1\xB9\xB9" => "\xE1\xB9\xB8",
"\xE1\xB9\xBB" => "\xE1\xB9\xBA",
"\xE1\xB9\xBD" => "\xE1\xB9\xBC",
"\xE1\xB9\xBF" => "\xE1\xB9\xBE",
"\xE1\xBA\x81" => "\xE1\xBA\x80",
"\xE1\xBA\x83" => "\xE1\xBA\x82",
"\xE1\xBA\x85" => "\xE1\xBA\x84",
"\xE1\xBA\x87" => "\xE1\xBA\x86",
"\xE1\xBA\x89" => "\xE1\xBA\x88",
"\xE1\xBA\x8B" => "\xE1\xBA\x8A",
"\xE1\xBA\x8D" => "\xE1\xBA\x8C",
"\xE1\xBA\x8F" => "\xE1\xBA\x8E",
"\xE1\xBA\x91" => "\xE1\xBA\x90",
"\xF0\x9E\xA4\xA2" => "\xF0\x9E\xA4\x80",
"\xF0\x9E\xA4\xA3" => "\xF0\x9E\xA4\x81",
"\xF0\x9E\xA4\xA4" => "\xF0\x9E\xA4\x82",
"\xF0\x9E\xA4\xA5" => "\xF0\x9E\xA4\x83",
"\xF0\x9E\xA4\xA6" => "\xF0\x9E\xA4\x84",
"\xF0\x9E\xA4\xA7" => "\xF0\x9E\xA4\x85",
"\xF0\x9E\xA4\xA8" => "\xF0\x9E\xA4\x86",
"\xF0\x9E\xA4\xA9" => "\xF0\x9E\xA4\x87",
"\xF0\x9E\xA4\xAA" => "\xF0\x9E\xA4\x88",
"\xF0\x9E\xA4\xAB" => "\xF0\x9E\xA4\x89",
"\xF0\x9E\xA4\xAC" => "\xF0\x9E\xA4\x8A",
"\xF0\x9E\xA4\xAD" => "\xF0\x9E\xA4\x8B",
"\xF0\x9E\xA4\xAE" => "\xF0\x9E\xA4\x8C",
"\xF0\x9E\xA4\xAF" => "\xF0\x9E\xA4\x8D",
"\xF0\x9E\xA4\xB0" => "\xF0\x9E\xA4\x8E",
"\xF0\x9E\xA4\xB1" => "\xF0\x9E\xA4\x8F",
"\xF0\x9E\xA4\xB2" => "\xF0\x9E\xA4\x90",
"\xF0\x9E\xA4\xB3" => "\xF0\x9E\xA4\x91",
"\xF0\x9E\xA4\xB4" => "\xF0\x9E\xA4\x92",
"\xF0\x9E\xA4\xB5" => "\xF0\x9E\xA4\x93",
"\xF0\x9E\xA4\xB6" => "\xF0\x9E\xA4\x94",
"\xF0\x9E\xA4\xB7" => "\xF0\x9E\xA4\x95",
"\xF0\x9E\xA4\xB8" => "\xF0\x9E\xA4\x96",
"\xF0\x9E\xA4\xB9" => "\xF0\x9E\xA4\x97",
"\xE1\xBA\x93" => "\xE1\xBA\x92",
"\xF0\x9E\xA4\xBA" => "\xF0\x9E\xA4\x98",
"\xF0\x9E\xA4\xBB" => "\xF0\x9E\xA4\x99",
"\xF0\x9E\xA4\xBC" => "\xF0\x9E\xA4\x9A",
"\xF0\x9E\xA4\xBD" => "\xF0\x9E\xA4\x9B",
"\xF0\x9E\xA4\xBE" => "\xF0\x9E\xA4\x9C",
"\xF0\x9E\xA4\xBF" => "\xF0\x9E\xA4\x9D",
"\xF0\x9E\xA5\x80" => "\xF0\x9E\xA4\x9E",
"\xF0\x9E\xA5\x81" => "\xF0\x9E\xA4\x9F",
"\xF0\x9E\xA5\x82" => "\xF0\x9E\xA4\xA0",
"\xF0\x9E\xA5\x83" => "\xF0\x9E\xA4\xA1",
"\xE1\xBA\x95" => "\xE1\xBA\x94",
"\xE1\xBA\x96" => "\x48\xCC\xB1",
"\xE1\xBA\x97" => "\x54\xCC\x88",
"\xE1\xBA\x98" => "\x57\xCC\x8A",
"\xE1\xBA\x99" => "\x59\xCC\x8A",
"\xE1\xBA\x9A" => "\x41\xCA\xBE",
"\xE1\xBA\x9B" => "\xE1\xB9\xA0",
"\xE1\xBA\xA1" => "\xE1\xBA\xA0",
"\xE1\xBA\xA3" => "\xE1\xBA\xA2",
"\xE1\xBA\xA5" => "\xE1\xBA\xA4",
"\xE1\xBA\xA7" => "\xE1\xBA\xA6",
"\xE1\xBA\xA9" => "\xE1\xBA\xA8",
"\xE1\xBA\xAB" => "\xE1\xBA\xAA",
"\xE1\xBA\xAD" => "\xE1\xBA\xAC",
"\xE1\xBA\xAF" => "\xE1\xBA\xAE",
"\xE1\xBA\xB1" => "\xE1\xBA\xB0",
"\xE1\xBA\xB3" => "\xE1\xBA\xB2",
"\xE1\xBA\xB5" => "\xE1\xBA\xB4",
"\xE1\xBA\xB7" => "\xE1\xBA\xB6",
"\xE1\xBA\xB9" => "\xE1\xBA\xB8",
"\xE1\xBA\xBB" => "\xE1\xBA\xBA",
"\xE1\xBA\xBD" => "\xE1\xBA\xBC",
"\xE1\xBA\xBF" => "\xE1\xBA\xBE",
"\xE1\xBB\x81" => "\xE1\xBB\x80",
"\xE1\xBB\x83" => "\xE1\xBB\x82",
"\xE1\xBB\x85" => "\xE1\xBB\x84",
"\xE1\xBB\x87" => "\xE1\xBB\x86",
"\xE1\xBB\x89" => "\xE1\xBB\x88",
"\xE1\xBB\x8B" => "\xE1\xBB\x8A",
"\xE1\xBB\x8D" => "\xE1\xBB\x8C",
"\xE1\xBB\x8F" => "\xE1\xBB\x8E",
"\xE1\xBB\x91" => "\xE1\xBB\x90",
"\xE1\xBB\x93" => "\xE1\xBB\x92",
"\xE1\xBB\x95" => "\xE1\xBB\x94",
"\xE1\xBB\x97" => "\xE1\xBB\x96",
"\xE1\xBB\x99" => "\xE1\xBB\x98",
"\xE1\xBB\x9B" => "\xE1\xBB\x9A",
"\xE1\xBB\x9D" => "\xE1\xBB\x9C",
"\xE1\xBB\x9F" => "\xE1\xBB\x9E",
"\xE1\xBB\xA1" => "\xE1\xBB\xA0",
"\xE1\xBB\xA3" => "\xE1\xBB\xA2",
"\xE1\xBB\xA5" => "\xE1\xBB\xA4",
"\xE1\xBB\xA7" => "\xE1\xBB\xA6",
"\xE1\xBB\xA9" => "\xE1\xBB\xA8",
"\xE1\xBB\xAB" => "\xE1\xBB\xAA",
"\xE1\xBB\xAD" => "\xE1\xBB\xAC",
"\xE1\xBB\xAF" => "\xE1\xBB\xAE",
"\xE1\xBB\xB1" => "\xE1\xBB\xB0",
"\xE1\xBB\xB3" => "\xE1\xBB\xB2",
"\xE1\xBB\xB5" => "\xE1\xBB\xB4",
"\xE1\xBB\xB7" => "\xE1\xBB\xB6",
"\xE1\xBB\xB9" => "\xE1\xBB\xB8",
"\xE1\xBB\xBB" => "\xE1\xBB\xBA",
"\xE1\xBB\xBD" => "\xE1\xBB\xBC",
"\xE1\xBB\xBF" => "\xE1\xBB\xBE",
"\xE1\xBC\x80" => "\xE1\xBC\x88",
"\xE1\xBC\x81" => "\xE1\xBC\x89",
"\xE1\xBC\x82" => "\xE1\xBC\x8A",
"\xE1\xBC\x83" => "\xE1\xBC\x8B",
"\xE1\xBC\x84" => "\xE1\xBC\x8C",
"\xE1\xBC\x85" => "\xE1\xBC\x8D",
"\xE1\xBC\x86" => "\xE1\xBC\x8E",
"\xE1\xBC\x87" => "\xE1\xBC\x8F",
"\xE1\xBC\x90" => "\xE1\xBC\x98",
"\xE1\xBC\x91" => "\xE1\xBC\x99",
"\xE1\xBC\x92" => "\xE1\xBC\x9A",
"\xE1\xBC\x93" => "\xE1\xBC\x9B",
"\xE1\xBC\x94" => "\xE1\xBC\x9C",
"\xE1\xBC\x95" => "\xE1\xBC\x9D",
"\xE1\xBC\xA0" => "\xE1\xBC\xA8",
"\xE1\xBC\xA1" => "\xE1\xBC\xA9",
"\xE1\xBC\xA2" => "\xE1\xBC\xAA",
"\xE1\xBC\xA3" => "\xE1\xBC\xAB",
"\xE1\xBC\xA4" => "\xE1\xBC\xAC",
"\xE1\xBC\xA5" => "\xE1\xBC\xAD",
"\xE1\xBC\xA6" => "\xE1\xBC\xAE",
"\xE1\xBC\xA7" => "\xE1\xBC\xAF",
"\xE1\xBC\xB0" => "\xE1\xBC\xB8",
"\xE1\xBC\xB1" => "\xE1\xBC\xB9",
"\xE1\xBC\xB2" => "\xE1\xBC\xBA",
"\xE1\xBC\xB3" => "\xE1\xBC\xBB",
"\xE1\xBC\xB4" => "\xE1\xBC\xBC",
"\xE1\xBC\xB5" => "\xE1\xBC\xBD",
"\xE1\xBC\xB6" => "\xE1\xBC\xBE",
"\xE1\xBC\xB7" => "\xE1\xBC\xBF",
"\xE1\xBD\x80" => "\xE1\xBD\x88",
"\xE1\xBD\x81" => "\xE1\xBD\x89",
"\xE1\xBD\x82" => "\xE1\xBD\x8A",
"\xE1\xBD\x83" => "\xE1\xBD\x8B",
"\xE1\xBD\x84" => "\xE1\xBD\x8C",
"\xE1\xBD\x85" => "\xE1\xBD\x8D",
"\xE1\xBD\x90" => "\xCE\xA5\xCC\x93",
"\xE1\xBD\x91" => "\xE1\xBD\x99",
"\xE1\xBD\x92" => "\xCE\xA5\xCC\x93\xCC\x80",
"\xE1\xBD\x93" => "\xE1\xBD\x9B",
"\xE1\xBD\x94" => "\xCE\xA5\xCC\x93\xCC\x81",
"\xE1\xBD\x95" => "\xE1\xBD\x9D",
"\xE1\xBD\x96" => "\xCE\xA5\xCC\x93\xCD\x82",
"\xE1\xBD\x97" => "\xE1\xBD\x9F",
"\xE1\xBD\xA0" => "\xE1\xBD\xA8",
"\xE1\xBD\xA1" => "\xE1\xBD\xA9",
"\xE1\xBD\xA2" => "\xE1\xBD\xAA",
"\xE1\xBD\xA3" => "\xE1\xBD\xAB",
"\xE1\xBD\xA4" => "\xE1\xBD\xAC",
"\xE1\xBD\xA5" => "\xE1\xBD\xAD",
"\xE1\xBD\xA6" => "\xE1\xBD\xAE",
"\xE1\xBD\xA7" => "\xE1\xBD\xAF",
"\xE1\xBD\xB0" => "\xE1\xBE\xBA",
"\xE1\xBD\xB1" => "\xE1\xBE\xBB",
"\xE1\xBD\xB2" => "\xE1\xBF\x88",
"\xE1\xBD\xB3" => "\xE1\xBF\x89",
"\xE1\xBD\xB4" => "\xE1\xBF\x8A",
"\xE1\xBD\xB5" => "\xE1\xBF\x8B",
"\xE1\xBD\xB6" => "\xE1\xBF\x9A",
"\xE1\xBD\xB7" => "\xE1\xBF\x9B",
"\xE1\xBD\xB8" => "\xE1\xBF\xB8",
"\xE1\xBD\xB9" => "\xE1\xBF\xB9",
"\xE1\xBD\xBA" => "\xE1\xBF\xAA",
"\xE1\xBD\xBB" => "\xE1\xBF\xAB",
"\xE1\xBD\xBC" => "\xE1\xBF\xBA",
"\xE1\xBD\xBD" => "\xE1\xBF\xBB",
"\xE1\xBE\x80" => "\xE1\xBC\x88\xCE\x99",
"\xE1\xBE\x81" => "\xE1\xBC\x89\xCE\x99",
"\xE1\xBE\x82" => "\xE1\xBC\x8A\xCE\x99",
"\xE1\xBE\x83" => "\xE1\xBC\x8B\xCE\x99",
"\xE1\xBE\x84" => "\xE1\xBC\x8C\xCE\x99",
"\xE1\xBE\x85" => "\xE1\xBC\x8D\xCE\x99",
"\xE1\xBE\x86" => "\xE1\xBC\x8E\xCE\x99",
"\xE1\xBE\x87" => "\xE1\xBC\x8F\xCE\x99",
"\xE1\xBE\x88" => "\xE1\xBC\x88\xCE\x99",
"\xE1\xBE\x89" => "\xE1\xBC\x89\xCE\x99",
"\xE1\xBE\x8A" => "\xE1\xBC\x8A\xCE\x99",
"\xE1\xBE\x8B" => "\xE1\xBC\x8B\xCE\x99",
"\xE1\xBE\x8C" => "\xE1\xBC\x8C\xCE\x99",
"\xE1\xBE\x8D" => "\xE1\xBC\x8D\xCE\x99",
"\xE1\xBE\x8E" => "\xE1\xBC\x8E\xCE\x99",
"\xE1\xBE\x8F" => "\xE1\xBC\x8F\xCE\x99",
"\xE1\xBE\x90" => "\xE1\xBC\xA8\xCE\x99",
"\xE1\xBE\x91" => "\xE1\xBC\xA9\xCE\x99",
"\xE1\xBE\x92" => "\xE1\xBC\xAA\xCE\x99",
"\xE1\xBE\x93" => "\xE1\xBC\xAB\xCE\x99",
"\xE1\xBE\x94" => "\xE1\xBC\xAC\xCE\x99",
"\xE1\xBE\x95" => "\xE1\xBC\xAD\xCE\x99",
"\xE1\xBE\x96" => "\xE1\xBC\xAE\xCE\x99",
"\xE1\xBE\x97" => "\xE1\xBC\xAF\xCE\x99",
"\xE1\xBE\x98" => "\xE1\xBC\xA8\xCE\x99",
"\xE1\xBE\x99" => "\xE1\xBC\xA9\xCE\x99",
"\xE1\xBE\x9A" => "\xE1\xBC\xAA\xCE\x99",
"\xE1\xBE\x9B" => "\xE1\xBC\xAB\xCE\x99",
"\xE1\xBE\x9C" => "\xE1\xBC\xAC\xCE\x99",
"\xE1\xBE\x9D" => "\xE1\xBC\xAD\xCE\x99",
"\xE1\xBE\x9E" => "\xE1\xBC\xAE\xCE\x99",
"\xE1\xBE\x9F" => "\xE1\xBC\xAF\xCE\x99",
"\xE1\xBE\xA0" => "\xE1\xBD\xA8\xCE\x99",
"\xE1\xBE\xA1" => "\xE1\xBD\xA9\xCE\x99",
"\xE1\xBE\xA2" => "\xE1\xBD\xAA\xCE\x99",
"\xE1\xBE\xA3" => "\xE1\xBD\xAB\xCE\x99",
"\xE1\xBE\xA4" => "\xE1\xBD\xAC\xCE\x99",
"\xE1\xBE\xA5" => "\xE1\xBD\xAD\xCE\x99",
"\xE1\xBE\xA6" => "\xE1\xBD\xAE\xCE\x99",
"\xE1\xBE\xA7" => "\xE1\xBD\xAF\xCE\x99",
"\xE1\xBE\xA8" => "\xE1\xBD\xA8\xCE\x99",
"\xE1\xBE\xA9" => "\xE1\xBD\xA9\xCE\x99",
"\xE1\xBE\xAA" => "\xE1\xBD\xAA\xCE\x99",
"\xE1\xBE\xAB" => "\xE1\xBD\xAB\xCE\x99",
"\xE1\xBE\xAC" => "\xE1\xBD\xAC\xCE\x99",
"\xE1\xBE\xAD" => "\xE1\xBD\xAD\xCE\x99",
"\xE1\xBE\xAE" => "\xE1\xBD\xAE\xCE\x99",
"\xE1\xBE\xAF" => "\xE1\xBD\xAF\xCE\x99",
"\xE1\xBE\xB0" => "\xE1\xBE\xB8",
"\xE1\xBE\xB1" => "\xE1\xBE\xB9",
"\xE1\xBE\xB2" => "\xE1\xBE\xBA\xCE\x99",
"\xE1\xBE\xB3" => "\xCE\x91\xCE\x99",
"\xE1\xBE\xB4" => "\xCE\x86\xCE\x99",
"\xE1\xBE\xB6" => "\xCE\x91\xCD\x82",
"\xE1\xBE\xB7" => "\xCE\x91\xCD\x82\xCE\x99",
"\xE1\xBE\xBC" => "\xCE\x91\xCE\x99",
"\xE1\xBE\xBE" => "\xCE\x99",
"\xE1\xBF\x82" => "\xE1\xBF\x8A\xCE\x99",
"\xE1\xBF\x83" => "\xCE\x97\xCE\x99",
"\xE1\xBF\x84" => "\xCE\x89\xCE\x99",
"\xE1\xBF\x86" => "\xCE\x97\xCD\x82",
"\xE1\xBF\x87" => "\xCE\x97\xCD\x82\xCE\x99",
"\xE1\xBF\x8C" => "\xCE\x97\xCE\x99",
"\xE1\xBF\x90" => "\xE1\xBF\x98",
"\xE1\xBF\x91" => "\xE1\xBF\x99",
"\xE1\xBF\x92" => "\xCE\x99\xCC\x88\xCC\x80",
"\xE1\xBF\x93" => "\xCE\x99\xCC\x88\xCC\x81",
"\xE1\xBF\x96" => "\xCE\x99\xCD\x82",
"\xE1\xBF\x97" => "\xCE\x99\xCC\x88\xCD\x82",
"\xE1\xBF\xA0" => "\xE1\xBF\xA8",
"\xE1\xBF\xA1" => "\xE1\xBF\xA9",
"\xE1\xBF\xA2" => "\xCE\xA5\xCC\x88\xCC\x80",
"\xE1\xBF\xA3" => "\xCE\xA5\xCC\x88\xCC\x81",
"\xE1\xBF\xA4" => "\xCE\xA1\xCC\x93",
"\xE1\xBF\xA5" => "\xE1\xBF\xAC",
"\xE1\xBF\xA6" => "\xCE\xA5\xCD\x82",
"\xE1\xBF\xA7" => "\xCE\xA5\xCC\x88\xCD\x82",
"\xE1\xBF\xB2" => "\xE1\xBF\xBA\xCE\x99",
"\xE1\xBF\xB3" => "\xCE\xA9\xCE\x99",
"\xE1\xBF\xB4" => "\xCE\x8F\xCE\x99",
"\xE1\xBF\xB6" => "\xCE\xA9\xCD\x82",
"\xE1\xBF\xB7" => "\xCE\xA9\xCD\x82\xCE\x99",
"\xE1\xBF\xBC" => "\xCE\xA9\xCE\x99",
"\xE2\x85\x8E" => "\xE2\x84\xB2",
"\xE2\x85\xB0" => "\xE2\x85\xA0",
"\xE2\x85\xB1" => "\xE2\x85\xA1",
"\xE2\x85\xB2" => "\xE2\x85\xA2",
"\xE2\x85\xB3" => "\xE2\x85\xA3",
"\xE2\x85\xB4" => "\xE2\x85\xA4",
"\xE2\x85\xB5" => "\xE2\x85\xA5",
"\xE2\x85\xB6" => "\xE2\x85\xA6",
"\xE2\x85\xB7" => "\xE2\x85\xA7",
"\xE2\x85\xB8" => "\xE2\x85\xA8",
"\xE2\x85\xB9" => "\xE2\x85\xA9",
"\xE2\x85\xBA" => "\xE2\x85\xAA",
"\xE2\x85\xBB" => "\xE2\x85\xAB",
"\xE2\x85\xBC" => "\xE2\x85\xAC",
"\xE2\x85\xBD" => "\xE2\x85\xAD",
"\xE2\x85\xBE" => "\xE2\x85\xAE",
"\xE2\x85\xBF" => "\xE2\x85\xAF",
"\xE2\x86\x84" => "\xE2\x86\x83",
"\xE2\x93\x90" => "\xE2\x92\xB6",
"\xE2\x93\x91" => "\xE2\x92\xB7",
"\xE2\x93\x92" => "\xE2\x92\xB8",
"\xE2\x93\x93" => "\xE2\x92\xB9",
"\xE2\x93\x94" => "\xE2\x92\xBA",
"\xE2\x93\x95" => "\xE2\x92\xBB",
"\xE2\x93\x96" => "\xE2\x92\xBC",
"\xE2\x93\x97" => "\xE2\x92\xBD",
"\xE2\x93\x98" => "\xE2\x92\xBE",
"\xE2\x93\x99" => "\xE2\x92\xBF",
"\xE2\x93\x9A" => "\xE2\x93\x80",
"\xE2\x93\x9B" => "\xE2\x93\x81",
"\xE2\x93\x9C" => "\xE2\x93\x82",
"\xE2\x93\x9D" => "\xE2\x93\x83",
"\xE2\x93\x9E" => "\xE2\x93\x84",
"\xE2\x93\x9F" => "\xE2\x93\x85",
"\xE2\x93\xA0" => "\xE2\x93\x86",
"\xE2\x93\xA1" => "\xE2\x93\x87",
"\xE2\x93\xA2" => "\xE2\x93\x88",
"\xE2\x93\xA3" => "\xE2\x93\x89",
"\xE2\x93\xA4" => "\xE2\x93\x8A",
"\xE2\x93\xA5" => "\xE2\x93\x8B",
"\xE2\x93\xA6" => "\xE2\x93\x8C",
"\xE2\x93\xA7" => "\xE2\x93\x8D",
"\xE2\x93\xA8" => "\xE2\x93\x8E",
"\xE2\x93\xA9" => "\xE2\x93\x8F",
"\xE2\xB0\xB0" => "\xE2\xB0\x80",
"\xE2\xB0\xB1" => "\xE2\xB0\x81",
"\xE2\xB0\xB2" => "\xE2\xB0\x82",
"\xE2\xB0\xB3" => "\xE2\xB0\x83",
"\xE2\xB0\xB4" => "\xE2\xB0\x84",
"\xE2\xB0\xB5" => "\xE2\xB0\x85",
"\xE2\xB0\xB6" => "\xE2\xB0\x86",
"\xE2\xB0\xB7" => "\xE2\xB0\x87",
"\xE2\xB0\xB8" => "\xE2\xB0\x88",
"\xE2\xB0\xB9" => "\xE2\xB0\x89",
"\xE2\xB0\xBA" => "\xE2\xB0\x8A",
"\xE2\xB0\xBB" => "\xE2\xB0\x8B",
"\xE2\xB0\xBC" => "\xE2\xB0\x8C",
"\xE2\xB0\xBD" => "\xE2\xB0\x8D",
"\xE2\xB0\xBE" => "\xE2\xB0\x8E",
"\xE2\xB0\xBF" => "\xE2\xB0\x8F",
"\xE2\xB1\x80" => "\xE2\xB0\x90",
"\xE2\xB1\x81" => "\xE2\xB0\x91",
"\xE2\xB1\x82" => "\xE2\xB0\x92",
"\xE2\xB1\x83" => "\xE2\xB0\x93",
"\xE2\xB1\x84" => "\xE2\xB0\x94",
"\xE2\xB1\x85" => "\xE2\xB0\x95",
"\xE2\xB1\x86" => "\xE2\xB0\x96",
"\xE2\xB1\x87" => "\xE2\xB0\x97",
"\xE2\xB1\x88" => "\xE2\xB0\x98",
"\xE2\xB1\x89" => "\xE2\xB0\x99",
"\xE2\xB1\x8A" => "\xE2\xB0\x9A",
"\xE2\xB1\x8B" => "\xE2\xB0\x9B",
"\xE2\xB1\x8C" => "\xE2\xB0\x9C",
"\xE2\xB1\x8D" => "\xE2\xB0\x9D",
"\xE2\xB1\x8E" => "\xE2\xB0\x9E",
"\xE2\xB1\x8F" => "\xE2\xB0\x9F",
"\xE2\xB1\x90" => "\xE2\xB0\xA0",
"\xE2\xB1\x91" => "\xE2\xB0\xA1",
"\xE2\xB1\x92" => "\xE2\xB0\xA2",
"\xE2\xB1\x93" => "\xE2\xB0\xA3",
"\xE2\xB1\x94" => "\xE2\xB0\xA4",
"\xE2\xB1\x95" => "\xE2\xB0\xA5",
"\xE2\xB1\x96" => "\xE2\xB0\xA6",
"\xE2\xB1\x97" => "\xE2\xB0\xA7",
"\xE2\xB1\x98" => "\xE2\xB0\xA8",
"\xE2\xB1\x99" => "\xE2\xB0\xA9",
"\xE2\xB1\x9A" => "\xE2\xB0\xAA",
"\xE2\xB1\x9B" => "\xE2\xB0\xAB",
"\xE2\xB1\x9C" => "\xE2\xB0\xAC",
"\xE2\xB1\x9D" => "\xE2\xB0\xAD",
"\xE2\xB1\x9E" => "\xE2\xB0\xAE",
"\xE2\xB1\x9F" => "\xE2\xB0\xAF",
"\xE2\xB1\xA1" => "\xE2\xB1\xA0",
"\xE2\xB1\xA5" => "\xC8\xBA",
"\xE2\xB1\xA6" => "\xC8\xBE",
"\xE2\xB1\xA8" => "\xE2\xB1\xA7",
"\xE2\xB1\xAA" => "\xE2\xB1\xA9",
"\xE2\xB1\xAC" => "\xE2\xB1\xAB",
"\xE2\xB1\xB3" => "\xE2\xB1\xB2",
"\xE2\xB1\xB6" => "\xE2\xB1\xB5",
"\xE2\xB2\x81" => "\xE2\xB2\x80",
"\xE2\xB2\x83" => "\xE2\xB2\x82",
"\xE2\xB2\x85" => "\xE2\xB2\x84",
"\xE2\xB2\x87" => "\xE2\xB2\x86",
"\xE2\xB2\x89" => "\xE2\xB2\x88",
"\xE2\xB2\x8B" => "\xE2\xB2\x8A",
"\xE2\xB2\x8D" => "\xE2\xB2\x8C",
"\xE2\xB2\x8F" => "\xE2\xB2\x8E",
"\xE2\xB2\x91" => "\xE2\xB2\x90",
"\xE2\xB2\x93" => "\xE2\xB2\x92",
"\xE2\xB2\x95" => "\xE2\xB2\x94",
"\xE2\xB2\x97" => "\xE2\xB2\x96",
"\xE2\xB2\x99" => "\xE2\xB2\x98",
"\xE2\xB2\x9B" => "\xE2\xB2\x9A",
"\xE2\xB2\x9D" => "\xE2\xB2\x9C",
"\xE2\xB2\x9F" => "\xE2\xB2\x9E",
"\xE2\xB2\xA1" => "\xE2\xB2\xA0",
"\xE2\xB2\xA3" => "\xE2\xB2\xA2",
"\xE2\xB2\xA5" => "\xE2\xB2\xA4",
"\xE2\xB2\xA7" => "\xE2\xB2\xA6",
"\xE2\xB2\xA9" => "\xE2\xB2\xA8",
"\xE2\xB2\xAB" => "\xE2\xB2\xAA",
"\xE2\xB2\xAD" => "\xE2\xB2\xAC",
"\xE2\xB2\xAF" => "\xE2\xB2\xAE",
"\xE2\xB2\xB1" => "\xE2\xB2\xB0",
"\xE2\xB2\xB3" => "\xE2\xB2\xB2",
"\xE2\xB2\xB5" => "\xE2\xB2\xB4",
"\xE2\xB2\xB7" => "\xE2\xB2\xB6",
"\xE2\xB2\xB9" => "\xE2\xB2\xB8",
"\xE2\xB2\xBB" => "\xE2\xB2\xBA",
"\xE2\xB2\xBD" => "\xE2\xB2\xBC",
"\xE2\xB2\xBF" => "\xE2\xB2\xBE",
"\xE2\xB3\x81" => "\xE2\xB3\x80",
"\xE2\xB3\x83" => "\xE2\xB3\x82",
"\xE2\xB3\x85" => "\xE2\xB3\x84",
"\xE2\xB3\x87" => "\xE2\xB3\x86",
"\xE2\xB3\x89" => "\xE2\xB3\x88",
"\xE2\xB3\x8B" => "\xE2\xB3\x8A",
"\xE2\xB3\x8D" => "\xE2\xB3\x8C",
"\xE2\xB3\x8F" => "\xE2\xB3\x8E",
"\xE2\xB3\x91" => "\xE2\xB3\x90",
"\xE2\xB3\x93" => "\xE2\xB3\x92",
"\xE2\xB3\x95" => "\xE2\xB3\x94",
"\xE2\xB3\x97" => "\xE2\xB3\x96",
"\xE2\xB3\x99" => "\xE2\xB3\x98",
"\xE2\xB3\x9B" => "\xE2\xB3\x9A",
"\xE2\xB3\x9D" => "\xE2\xB3\x9C",
"\xE2\xB3\x9F" => "\xE2\xB3\x9E",
"\xE2\xB3\xA1" => "\xE2\xB3\xA0",
"\xE2\xB3\xA3" => "\xE2\xB3\xA2",
"\xE2\xB3\xAC" => "\xE2\xB3\xAB",
"\xE2\xB3\xAE" => "\xE2\xB3\xAD",
"\xE2\xB3\xB3" => "\xE2\xB3\xB2",
"\xE2\xB4\x80" => "\xE1\x82\xA0",
"\xE2\xB4\x81" => "\xE1\x82\xA1",
"\xE2\xB4\x82" => "\xE1\x82\xA2",
"\xE2\xB4\x83" => "\xE1\x82\xA3",
"\xE2\xB4\x84" => "\xE1\x82\xA4",
"\xE2\xB4\x85" => "\xE1\x82\xA5",
"\xE2\xB4\x86" => "\xE1\x82\xA6",
"\xE2\xB4\x87" => "\xE1\x82\xA7",
"\xE2\xB4\x88" => "\xE1\x82\xA8",
"\xE2\xB4\x89" => "\xE1\x82\xA9",
"\xE2\xB4\x8A" => "\xE1\x82\xAA",
"\xE2\xB4\x8B" => "\xE1\x82\xAB",
"\xE2\xB4\x8C" => "\xE1\x82\xAC",
"\xE2\xB4\x8D" => "\xE1\x82\xAD",
"\xE2\xB4\x8E" => "\xE1\x82\xAE",
"\xE2\xB4\x8F" => "\xE1\x82\xAF",
"\xE2\xB4\x90" => "\xE1\x82\xB0",
"\xE2\xB4\x91" => "\xE1\x82\xB1",
"\xE2\xB4\x92" => "\xE1\x82\xB2",
"\xE2\xB4\x93" => "\xE1\x82\xB3",
"\xE2\xB4\x94" => "\xE1\x82\xB4",
"\xE2\xB4\x95" => "\xE1\x82\xB5",
"\xE2\xB4\x96" => "\xE1\x82\xB6",
"\xE2\xB4\x97" => "\xE1\x82\xB7",
"\xE2\xB4\x98" => "\xE1\x82\xB8",
"\xE2\xB4\x99" => "\xE1\x82\xB9",
"\xE2\xB4\x9A" => "\xE1\x82\xBA",
"\xE2\xB4\x9B" => "\xE1\x82\xBB",
"\xE2\xB4\x9C" => "\xE1\x82\xBC",
"\xE2\xB4\x9D" => "\xE1\x82\xBD",
"\xE2\xB4\x9E" => "\xE1\x82\xBE",
"\xE2\xB4\x9F" => "\xE1\x82\xBF",
"\xE2\xB4\xA0" => "\xE1\x83\x80",
"\xE2\xB4\xA1" => "\xE1\x83\x81",
"\xE2\xB4\xA2" => "\xE1\x83\x82",
"\xE2\xB4\xA3" => "\xE1\x83\x83",
"\xE2\xB4\xA4" => "\xE1\x83\x84",
"\xE2\xB4\xA5" => "\xE1\x83\x85",
"\xE2\xB4\xA7" => "\xE1\x83\x87",
"\xE2\xB4\xAD" => "\xE1\x83\x8D",
"\xEA\x99\x81" => "\xEA\x99\x80",
"\xEA\x99\x83" => "\xEA\x99\x82",
"\xEA\x99\x85" => "\xEA\x99\x84",
"\xEA\x99\x87" => "\xEA\x99\x86",
"\xEA\x99\x89" => "\xEA\x99\x88",
"\xEA\x99\x8B" => "\xEA\x99\x8A",
"\xEA\x99\x8D" => "\xEA\x99\x8C",
"\xEA\x99\x8F" => "\xEA\x99\x8E",
"\xEA\x99\x91" => "\xEA\x99\x90",
"\xEA\x99\x93" => "\xEA\x99\x92",
"\xEA\x99\x95" => "\xEA\x99\x94",
"\xEA\x99\x97" => "\xEA\x99\x96",
"\xEA\x99\x99" => "\xEA\x99\x98",
"\xEA\x99\x9B" => "\xEA\x99\x9A",
"\xEA\x99\x9D" => "\xEA\x99\x9C",
"\xEA\x99\x9F" => "\xEA\x99\x9E",
"\xEA\x99\xA1" => "\xEA\x99\xA0",
"\xEA\x99\xA3" => "\xEA\x99\xA2",
"\xEA\x99\xA5" => "\xEA\x99\xA4",
"\xEA\x99\xA7" => "\xEA\x99\xA6",
"\xEA\x99\xA9" => "\xEA\x99\xA8",
"\xEA\x99\xAB" => "\xEA\x99\xAA",
"\xEA\x99\xAD" => "\xEA\x99\xAC",
"\xEA\x9A\x81" => "\xEA\x9A\x80",
"\xEA\x9A\x83" => "\xEA\x9A\x82",
"\xEA\x9A\x85" => "\xEA\x9A\x84",
"\xEA\x9A\x87" => "\xEA\x9A\x86",
"\xEA\x9A\x89" => "\xEA\x9A\x88",
"\xEA\x9A\x8B" => "\xEA\x9A\x8A",
"\xEA\x9A\x8D" => "\xEA\x9A\x8C",
"\xEA\x9A\x8F" => "\xEA\x9A\x8E",
"\xEA\x9A\x91" => "\xEA\x9A\x90",
"\xEA\x9A\x93" => "\xEA\x9A\x92",
"\xEA\x9A\x95" => "\xEA\x9A\x94",
"\xEA\x9A\x97" => "\xEA\x9A\x96",
"\xEA\x9A\x99" => "\xEA\x9A\x98",
"\xEA\x9A\x9B" => "\xEA\x9A\x9A",
"\xEA\x9C\xA3" => "\xEA\x9C\xA2",
"\xEA\x9C\xA5" => "\xEA\x9C\xA4",
"\xEA\x9C\xA7" => "\xEA\x9C\xA6",
"\xEA\x9C\xA9" => "\xEA\x9C\xA8",
"\xEA\x9C\xAB" => "\xEA\x9C\xAA",
"\xEA\x9C\xAD" => "\xEA\x9C\xAC",
"\xEA\x9C\xAF" => "\xEA\x9C\xAE",
"\xEA\x9C\xB3" => "\xEA\x9C\xB2",
"\xEA\x9C\xB5" => "\xEA\x9C\xB4",
"\xEA\x9C\xB7" => "\xEA\x9C\xB6",
"\xEA\x9C\xB9" => "\xEA\x9C\xB8",
"\xEA\x9C\xBB" => "\xEA\x9C\xBA",
"\xEA\x9C\xBD" => "\xEA\x9C\xBC",
"\xEA\x9C\xBF" => "\xEA\x9C\xBE",
"\xEA\x9D\x81" => "\xEA\x9D\x80",
"\xEA\x9D\x83" => "\xEA\x9D\x82",
"\xEA\x9D\x85" => "\xEA\x9D\x84",
"\xEA\x9D\x87" => "\xEA\x9D\x86",
"\xEA\x9D\x89" => "\xEA\x9D\x88",
"\xEA\x9D\x8B" => "\xEA\x9D\x8A",
"\xEA\x9D\x8D" => "\xEA\x9D\x8C",
"\xEA\x9D\x8F" => "\xEA\x9D\x8E",
"\xEA\x9D\x91" => "\xEA\x9D\x90",
"\xEA\x9D\x93" => "\xEA\x9D\x92",
"\xEA\x9D\x95" => "\xEA\x9D\x94",
"\xEA\x9D\x97" => "\xEA\x9D\x96",
"\xEA\x9D\x99" => "\xEA\x9D\x98",
"\xEA\x9D\x9B" => "\xEA\x9D\x9A",
"\xEA\x9D\x9D" => "\xEA\x9D\x9C",
"\xEA\x9D\x9F" => "\xEA\x9D\x9E",
"\xEA\x9D\xA1" => "\xEA\x9D\xA0",
"\xEA\x9D\xA3" => "\xEA\x9D\xA2",
"\xEA\x9D\xA5" => "\xEA\x9D\xA4",
"\xEA\x9D\xA7" => "\xEA\x9D\xA6",
"\xEA\x9D\xA9" => "\xEA\x9D\xA8",
"\xEA\x9D\xAB" => "\xEA\x9D\xAA",
"\xEA\x9D\xAD" => "\xEA\x9D\xAC",
"\xEA\x9D\xAF" => "\xEA\x9D\xAE",
"\xEA\x9D\xBA" => "\xEA\x9D\xB9",
"\xEA\x9D\xBC" => "\xEA\x9D\xBB",
"\xEA\x9D\xBF" => "\xEA\x9D\xBE",
"\xEA\x9E\x81" => "\xEA\x9E\x80",
"\xEA\x9E\x83" => "\xEA\x9E\x82",
"\xEA\x9E\x85" => "\xEA\x9E\x84",
"\xEA\x9E\x87" => "\xEA\x9E\x86",
"\xEA\x9E\x8C" => "\xEA\x9E\x8B",
"\xEA\x9E\x91" => "\xEA\x9E\x90",
"\xEA\x9E\x93" => "\xEA\x9E\x92",
"\xEA\x9E\x94" => "\xEA\x9F\x84",
"\xEA\x9E\x97" => "\xEA\x9E\x96",
"\xEA\x9E\x99" => "\xEA\x9E\x98",
"\xEA\x9E\x9B" => "\xEA\x9E\x9A",
"\xEA\x9E\x9D" => "\xEA\x9E\x9C",
"\xEA\x9E\x9F" => "\xEA\x9E\x9E",
"\xEA\x9E\xA1" => "\xEA\x9E\xA0",
"\xEA\x9E\xA3" => "\xEA\x9E\xA2",
"\xEA\x9E\xA5" => "\xEA\x9E\xA4",
"\xEA\x9E\xA7" => "\xEA\x9E\xA6",
"\xEA\x9E\xA9" => "\xEA\x9E\xA8",
"\xEA\x9E\xB5" => "\xEA\x9E\xB4",
"\xEA\x9E\xB7" => "\xEA\x9E\xB6",
"\xEA\x9E\xB9" => "\xEA\x9E\xB8",
"\xEA\x9E\xBB" => "\xEA\x9E\xBA",
"\xEA\x9E\xBD" => "\xEA\x9E\xBC",
"\xEA\x9E\xBF" => "\xEA\x9E\xBE",
"\xEA\x9F\x81" => "\xEA\x9F\x80",
"\xEA\x9F\x83" => "\xEA\x9F\x82",
"\xEA\x9F\x88" => "\xEA\x9F\x87",
"\xEA\x9F\x8A" => "\xEA\x9F\x89",
"\xEA\x9F\x91" => "\xEA\x9F\x90",
"\xEA\x9F\x97" => "\xEA\x9F\x96",
"\xEA\x9F\x99" => "\xEA\x9F\x98",
"\xEA\x9F\xB6" => "\xEA\x9F\xB5",
"\xEA\xAD\x93" => "\xEA\x9E\xB3",
"\xEA\xAD\xB0" => "\xE1\x8E\xA0",
"\xEA\xAD\xB1" => "\xE1\x8E\xA1",
"\xEA\xAD\xB2" => "\xE1\x8E\xA2",
"\xEA\xAD\xB3" => "\xE1\x8E\xA3",
"\xEA\xAD\xB4" => "\xE1\x8E\xA4",
"\xEA\xAD\xB5" => "\xE1\x8E\xA5",
"\xEA\xAD\xB6" => "\xE1\x8E\xA6",
"\xEA\xAD\xB7" => "\xE1\x8E\xA7",
"\xEA\xAD\xB8" => "\xE1\x8E\xA8",
"\xEA\xAD\xB9" => "\xE1\x8E\xA9",
"\xEA\xAD\xBA" => "\xE1\x8E\xAA",
"\xEA\xAD\xBB" => "\xE1\x8E\xAB",
"\xEA\xAD\xBC" => "\xE1\x8E\xAC",
"\xEA\xAD\xBD" => "\xE1\x8E\xAD",
"\xEA\xAD\xBE" => "\xE1\x8E\xAE",
"\xEA\xAD\xBF" => "\xE1\x8E\xAF",
"\xEA\xAE\x80" => "\xE1\x8E\xB0",
"\xEA\xAE\x81" => "\xE1\x8E\xB1",
"\xEA\xAE\x82" => "\xE1\x8E\xB2",
"\xEA\xAE\x83" => "\xE1\x8E\xB3",
"\xEA\xAE\x84" => "\xE1\x8E\xB4",
"\xEA\xAE\x85" => "\xE1\x8E\xB5",
"\xEA\xAE\x86" => "\xE1\x8E\xB6",
"\xEA\xAE\x87" => "\xE1\x8E\xB7",
"\xEA\xAE\x88" => "\xE1\x8E\xB8",
"\xEA\xAE\x89" => "\xE1\x8E\xB9",
"\xEA\xAE\x8A" => "\xE1\x8E\xBA",
"\xEA\xAE\x8B" => "\xE1\x8E\xBB",
"\xEA\xAE\x8C" => "\xE1\x8E\xBC",
"\xEA\xAE\x8D" => "\xE1\x8E\xBD",
"\xEA\xAE\x8E" => "\xE1\x8E\xBE",
"\xEA\xAE\x8F" => "\xE1\x8E\xBF",
"\xEA\xAE\x90" => "\xE1\x8F\x80",
"\xEA\xAE\x91" => "\xE1\x8F\x81",
"\xEA\xAE\x92" => "\xE1\x8F\x82",
"\xEA\xAE\x93" => "\xE1\x8F\x83",
"\xEA\xAE\x94" => "\xE1\x8F\x84",
"\xEA\xAE\x95" => "\xE1\x8F\x85",
"\xEA\xAE\x96" => "\xE1\x8F\x86",
"\xEA\xAE\x97" => "\xE1\x8F\x87",
"\xEA\xAE\x98" => "\xE1\x8F\x88",
"\xEA\xAE\x99" => "\xE1\x8F\x89",
"\xEA\xAE\x9A" => "\xE1\x8F\x8A",
"\xEA\xAE\x9B" => "\xE1\x8F\x8B",
"\xEA\xAE\x9C" => "\xE1\x8F\x8C",
"\xEA\xAE\x9D" => "\xE1\x8F\x8D",
"\xEA\xAE\x9E" => "\xE1\x8F\x8E",
"\xEA\xAE\x9F" => "\xE1\x8F\x8F",
"\xEA\xAE\xA0" => "\xE1\x8F\x90",
"\xEA\xAE\xA1" => "\xE1\x8F\x91",
"\xEA\xAE\xA2" => "\xE1\x8F\x92",
"\xEA\xAE\xA3" => "\xE1\x8F\x93",
"\xEA\xAE\xA4" => "\xE1\x8F\x94",
"\xEA\xAE\xA5" => "\xE1\x8F\x95",
"\xEA\xAE\xA6" => "\xE1\x8F\x96",
"\xEA\xAE\xA7" => "\xE1\x8F\x97",
"\xEA\xAE\xA8" => "\xE1\x8F\x98",
"\xEA\xAE\xA9" => "\xE1\x8F\x99",
"\xEA\xAE\xAA" => "\xE1\x8F\x9A",
"\xEA\xAE\xAB" => "\xE1\x8F\x9B",
"\xEA\xAE\xAC" => "\xE1\x8F\x9C",
"\xEA\xAE\xAD" => "\xE1\x8F\x9D",
"\xEA\xAE\xAE" => "\xE1\x8F\x9E",
"\xEA\xAE\xAF" => "\xE1\x8F\x9F",
"\xEA\xAE\xB0" => "\xE1\x8F\xA0",
"\xEA\xAE\xB1" => "\xE1\x8F\xA1",
"\xEA\xAE\xB2" => "\xE1\x8F\xA2",
"\xEA\xAE\xB3" => "\xE1\x8F\xA3",
"\xEA\xAE\xB4" => "\xE1\x8F\xA4",
"\xEA\xAE\xB5" => "\xE1\x8F\xA5",
"\xEA\xAE\xB6" => "\xE1\x8F\xA6",
"\xEA\xAE\xB7" => "\xE1\x8F\xA7",
"\xEA\xAE\xB8" => "\xE1\x8F\xA8",
"\xEA\xAE\xB9" => "\xE1\x8F\xA9",
"\xEA\xAE\xBA" => "\xE1\x8F\xAA",
"\xEA\xAE\xBB" => "\xE1\x8F\xAB",
"\xEA\xAE\xBC" => "\xE1\x8F\xAC",
"\xEA\xAE\xBD" => "\xE1\x8F\xAD",
"\xEA\xAE\xBE" => "\xE1\x8F\xAE",
"\xEA\xAE\xBF" => "\xE1\x8F\xAF",
"\xEF\xAC\x80" => "\x46\x46",
"\xEF\xAC\x81" => "\x46\x49",
"\xEF\xAC\x82" => "\x46\x4C",
"\xEF\xAC\x83" => "\x46\x46\x49",
"\xEF\xAC\x84" => "\x46\x46\x4C",
"\xEF\xAC\x85" => "\x53\x54",
"\xEF\xAC\x86" => "\x53\x54",
"\xEF\xAC\x93" => "\xD5\x84\xD5\x86",
"\xEF\xAC\x94" => "\xD5\x84\xD4\xB5",
"\xEF\xAC\x95" => "\xD5\x84\xD4\xBB",
"\xEF\xAC\x96" => "\xD5\x8E\xD5\x86",
"\xEF\xAC\x97" => "\xD5\x84\xD4\xBD",
"\xEF\xBD\x81" => "\xEF\xBC\xA1",
"\xEF\xBD\x82" => "\xEF\xBC\xA2",
"\xEF\xBD\x83" => "\xEF\xBC\xA3",
"\xEF\xBD\x84" => "\xEF\xBC\xA4",
"\xEF\xBD\x85" => "\xEF\xBC\xA5",
"\xEF\xBD\x86" => "\xEF\xBC\xA6",
"\xEF\xBD\x87" => "\xEF\xBC\xA7",
"\xEF\xBD\x88" => "\xEF\xBC\xA8",
"\xEF\xBD\x89" => "\xEF\xBC\xA9",
"\xEF\xBD\x8A" => "\xEF\xBC\xAA",
"\xEF\xBD\x8B" => "\xEF\xBC\xAB",
"\xEF\xBD\x8C" => "\xEF\xBC\xAC",
"\xEF\xBD\x8D" => "\xEF\xBC\xAD",
"\xEF\xBD\x8E" => "\xEF\xBC\xAE",
"\xEF\xBD\x8F" => "\xEF\xBC\xAF",
"\xEF\xBD\x90" => "\xEF\xBC\xB0",
"\xEF\xBD\x91" => "\xEF\xBC\xB1",
"\xEF\xBD\x92" => "\xEF\xBC\xB2",
"\xEF\xBD\x93" => "\xEF\xBC\xB3",
"\xEF\xBD\x94" => "\xEF\xBC\xB4",
"\xEF\xBD\x95" => "\xEF\xBC\xB5",
"\xEF\xBD\x96" => "\xEF\xBC\xB6",
"\xEF\xBD\x97" => "\xEF\xBC\xB7",
"\xEF\xBD\x98" => "\xEF\xBC\xB8",
"\xEF\xBD\x99" => "\xEF\xBC\xB9",
"\xEF\xBD\x9A" => "\xEF\xBC\xBA",
);
}

?>

./Sources/Unicode/CombiningClasses.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
"\xF0\x90\xBA\xAC" => 230,
Add After: Select
"\xF0\x90\xBB\xBD" => 220,
"\xF0\x90\xBB\xBE" => 220,
"\xF0\x90\xBB\xBF" => 220,
Find: Select
"\xF0\x91\xB6\x97" => 9,
Add After: Select
"\xF0\x91\xBD\x81" => 9,
"\xF0\x91\xBD\x82" => 9,
Find: Select
"\xF0\x9E\x80\xAA" => 230,
Add After: Select
"\xF0\x9E\x82\x8F" => 230,
Find: Select
"\xF0\x9E\x8B\xAF" => 230,
Add After: Select
"\xF0\x9E\x93\xAC" => 232,
"\xF0\x9E\x93\xAD" => 232,
"\xF0\x9E\x93\xAE" => 220,
"\xF0\x9E\x93\xAF" => 230,

./Sources/Unicode/DecompositionCompatibility.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
"\xF0\x9E\xB8\x80" => "\xD8\xA7",
Add Before: Select
"\xF0\x9E\x80\xB0" => "\xD0\xB0",
"\xF0\x9E\x80\xB1" => "\xD0\xB1",
"\xF0\x9E\x80\xB2" => "\xD0\xB2",
"\xF0\x9E\x80\xB3" => "\xD0\xB3",
"\xF0\x9E\x80\xB4" => "\xD0\xB4",
"\xF0\x9E\x80\xB5" => "\xD0\xB5",
"\xF0\x9E\x80\xB6" => "\xD0\xB6",
"\xF0\x9E\x80\xB7" => "\xD0\xB7",
"\xF0\x9E\x80\xB8" => "\xD0\xB8",
"\xF0\x9E\x80\xB9" => "\xD0\xBA",
"\xF0\x9E\x80\xBA" => "\xD0\xBB",
"\xF0\x9E\x80\xBB" => "\xD0\xBC",
"\xF0\x9E\x80\xBC" => "\xD0\xBE",
"\xF0\x9E\x80\xBD" => "\xD0\xBF",
"\xF0\x9E\x80\xBE" => "\xD1\x80",
"\xF0\x9E\x80\xBF" => "\xD1\x81",
"\xF0\x9E\x81\x80" => "\xD1\x82",
"\xF0\x9E\x81\x81" => "\xD1\x83",
"\xF0\x9E\x81\x82" => "\xD1\x84",
"\xF0\x9E\x81\x83" => "\xD1\x85",
"\xF0\x9E\x81\x84" => "\xD1\x86",
"\xF0\x9E\x81\x85" => "\xD1\x87",
"\xF0\x9E\x81\x86" => "\xD1\x88",
"\xF0\x9E\x81\x87" => "\xD1\x8B",
"\xF0\x9E\x81\x88" => "\xD1\x8D",
"\xF0\x9E\x81\x89" => "\xD1\x8E",
"\xF0\x9E\x81\x8A" => "\xEA\x9A\x89",
"\xF0\x9E\x81\x8B" => "\xD3\x99",
"\xF0\x9E\x81\x8C" => "\xD1\x96",
"\xF0\x9E\x81\x8D" => "\xD1\x98",
"\xF0\x9E\x81\x8E" => "\xD3\xA9",
"\xF0\x9E\x81\x8F" => "\xD2\xAF",
"\xF0\x9E\x81\x90" => "\xD3\x8F",
"\xF0\x9E\x81\x91" => "\xD0\xB0",
"\xF0\x9E\x81\x92" => "\xD0\xB1",
"\xF0\x9E\x81\x93" => "\xD0\xB2",
"\xF0\x9E\x81\x94" => "\xD0\xB3",
"\xF0\x9E\x81\x95" => "\xD0\xB4",
"\xF0\x9E\x81\x96" => "\xD0\xB5",
"\xF0\x9E\x81\x97" => "\xD0\xB6",
"\xF0\x9E\x81\x98" => "\xD0\xB7",
"\xF0\x9E\x81\x99" => "\xD0\xB8",
"\xF0\x9E\x81\x9A" => "\xD0\xBA",
"\xF0\x9E\x81\x9B" => "\xD0\xBB",
"\xF0\x9E\x81\x9C" => "\xD0\xBE",
"\xF0\x9E\x81\x9D" => "\xD0\xBF",
"\xF0\x9E\x81\x9E" => "\xD1\x81",
"\xF0\x9E\x81\x9F" => "\xD1\x83",
"\xF0\x9E\x81\xA0" => "\xD1\x84",
"\xF0\x9E\x81\xA1" => "\xD1\x85",
"\xF0\x9E\x81\xA2" => "\xD1\x86",
"\xF0\x9E\x81\xA3" => "\xD1\x87",
"\xF0\x9E\x81\xA4" => "\xD1\x88",
"\xF0\x9E\x81\xA5" => "\xD1\x8A",
"\xF0\x9E\x81\xA6" => "\xD1\x8B",
"\xF0\x9E\x81\xA7" => "\xD2\x91",
"\xF0\x9E\x81\xA8" => "\xD1\x96",
"\xF0\x9E\x81\xA9" => "\xD1\x95",
"\xF0\x9E\x81\xAA" => "\xD1\x9F",
"\xF0\x9E\x81\xAB" => "\xD2\xAB",
"\xF0\x9E\x81\xAC" => "\xEA\x99\x91",
"\xF0\x9E\x81\xAD" => "\xD2\xB1",

./Sources/Unicode/RegularExpressions.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
* Helper function for utf8_sanitize_invisibles.
*
* Character class lists compiled from:
* https://unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
Replace With: Select
* Helper function for utf8_sanitize_invisibles and utf8_convert_case.
*
* Character class lists compiled from:
* https://unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
Find: Select
'Bidi_Control' => '\x{061C}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2066}-\x{2069}',
'Cn' => '\x{0378}-\x{0379}\x{0380}-\x{0383}\x{038B}\x{038D}\x{03A2}\x{0530}\x{0557}-\x{0558}\x{058B}-\x{058C}\x{0590}\x{05C8}-\x{05CF}\x{05EB}-\x{05EE}\x{05F5}-\x{05FF}\x{070E}\x{074B}-\x{074C}\x{07B2}-\x{07BF}\x{07FB}-\x{07FC}\x{082E}-\x{082F}\x{083F}\x{085C}-\x{085D}\x{085F}\x{086B}-\x{086F}\x{088F}\x{0892}-\x{0897}\x{0984}\x{098D}-\x{098E}\x{0991}-\x{0992}\x{09A9}\x{09B1}\x{09B3}-\x{09B5}\x{09BA}-\x{09BB}\x{09C5}-\x{09C6}\x{09C9}-\x{09CA}\x{09CF}-\x{09D6}\x{09D8}-\x{09DB}\x{09DE}\x{09E4}-\x{09E5}\x{09FF}-\x{0A00}\x{0A04}\x{0A0B}-\x{0A0E}\x{0A11}-\x{0A12}\x{0A29}\x{0A31}\x{0A34}\x{0A37}\x{0A3A}-\x{0A3B}\x{0A3D}\x{0A43}-\x{0A46}\x{0A49}-\x{0A4A}\x{0A4E}-\x{0A50}\x{0A52}-\x{0A58}\x{0A5D}\x{0A5F}-\x{0A65}\x{0A77}-\x{0A80}\x{0A84}\x{0A8E}\x{0A92}\x{0AA9}\x{0AB1}\x{0AB4}\x{0ABA}-\x{0ABB}\x{0AC6}\x{0ACA}\x{0ACE}-\x{0ACF}\x{0AD1}-\x{0ADF}\x{0AE4}-\x{0AE5}\x{0AF2}-\x{0AF8}\x{0B00}\x{0B04}\x{0B0D}-\x{0B0E}\x{0B11}-\x{0B12}\x{0B29}\x{0B31}\x{0B34}\x{0B3A}-\x{0B3B}\x{0B45}-\x{0B46}\x{0B49}-\x{0B4A}\x{0B4E}-\x{0B54}\x{0B58}-\x{0B5B}\x{0B5E}\x{0B64}-\x{0B65}\x{0B78}-\x{0B81}\x{0B84}\x{0B8B}-\x{0B8D}\x{0B91}\x{0B96}-\x{0B98}\x{0B9B}\x{0B9D}\x{0BA0}-\x{0BA2}\x{0BA5}-\x{0BA7}\x{0BAB}-\x{0BAD}\x{0BBA}-\x{0BBD}\x{0BC3}-\x{0BC5}\x{0BC9}\x{0BCE}-\x{0BCF}\x{0BD1}-\x{0BD6}\x{0BD8}-\x{0BE5}\x{0BFB}-\x{0BFF}\x{0C0D}\x{0C11}\x{0C29}\x{0C3A}-\x{0C3B}\x{0C45}\x{0C49}\x{0C4E}-\x{0C54}\x{0C57}\x{0C5B}-\x{0C5C}\x{0C5E}-\x{0C5F}\x{0C64}-\x{0C65}\x{0C70}-\x{0C76}\x{0C8D}\x{0C91}\x{0CA9}\x{0CB4}\x{0CBA}-\x{0CBB}\x{0CC5}\x{0CC9}\x{0CCE}-\x{0CD4}\x{0CD7}-\x{0CDC}\x{0CDF}\x{0CE4}-\x{0CE5}\x{0CF0}\x{0CF3}-\x{0CFF}\x{0D0D}\x{0D11}\x{0D45}\x{0D49}\x{0D50}-\x{0D53}\x{0D64}-\x{0D65}\x{0D80}\x{0D84}\x{0D97}-\x{0D99}\x{0DB2}\x{0DBC}\x{0DBE}-\x{0DBF}\x{0DC7}-\x{0DC9}\x{0DCB}-\x{0DCE}\x{0DD5}\x{0DD7}\x{0DE0}-\x{0DE5}\x{0DF0}-\x{0DF1}\x{0DF5}-\x{0E00}\x{0E3B}-\x{0E3E}\x{0E5C}-\x{0E80}\x{0E83}\x{0E85}\x{0E8B}\x{0EA4}\x{0EA6}\x{0EBE}-\x{0EBF}\x{0EC5}\x{0EC7}\x{0ECE}-\x{0ECF}\x{0EDA}-\x{0EDB}\x{0EE0}-\x{0EFF}\x{0F48}\x{0F6D}-\x{0F70}\x{0F98}\x{0FBD}\x{0FCD}\x{0FDB}-\x{0FFF}\x{10C6}\x{10C8}-\x{10CC}\x{10CE}-\x{10CF}\x{1249}\x{124E}-\x{124F}\x{1257}\x{1259}\x{125E}-\x{125F}\x{1289}\x{128E}-\x{128F}\x{12B1}\x{12B6}-\x{12B7}\x{12BF}\x{12C1}\x{12C6}-\x{12C7}\x{12D7}\x{1311}\x{1316}-\x{1317}\x{135B}-\x{135C}\x{137D}-\x{137F}\x{139A}-\x{139F}\x{13F6}-\x{13F7}\x{13FE}-\x{13FF}\x{169D}-\x{169F}\x{16F9}-\x{16FF}\x{1716}-\x{171E}\x{1737}-\x{173F}\x{1754}-\x{175F}\x{176D}\x{1771}\x{1774}-\x{177F}\x{17DE}-\x{17DF}\x{17EA}-\x{17EF}\x{17FA}-\x{17FF}\x{181A}-\x{181F}\x{1879}-\x{187F}\x{18AB}-\x{18AF}\x{18F6}-\x{18FF}\x{191F}\x{192C}-\x{192F}\x{193C}-\x{193F}\x{1941}-\x{1943}\x{196E}-\x{196F}\x{1975}-\x{197F}\x{19AC}-\x{19AF}\x{19CA}-\x{19CF}\x{19DB}-\x{19DD}\x{1A1C}-\x{1A1D}\x{1A5F}\x{1A7D}-\x{1A7E}\x{1A8A}-\x{1A8F}\x{1A9A}-\x{1A9F}\x{1AAE}-\x{1AAF}\x{1ACF}-\x{1AFF}\x{1B4D}-\x{1B4F}\x{1B7F}\x{1BF4}-\x{1BFB}\x{1C38}-\x{1C3A}\x{1C4A}-\x{1C4C}\x{1C89}-\x{1C8F}\x{1CBB}-\x{1CBC}\x{1CC8}-\x{1CCF}\x{1CFB}-\x{1CFF}\x{1F16}-\x{1F17}\x{1F1E}-\x{1F1F}\x{1F46}-\x{1F47}\x{1F4E}-\x{1F4F}\x{1F58}\x{1F5A}\x{1F5C}\x{1F5E}\x{1F7E}-\x{1F7F}\x{1FB5}\x{1FC5}\x{1FD4}-\x{1FD5}\x{1FDC}\x{1FF0}-\x{1FF1}\x{1FF5}\x{1FFF}\x{2065}\x{2072}-\x{2073}\x{208F}\x{209D}-\x{209F}\x{20C1}-\x{20CF}\x{20F1}-\x{20FF}\x{218C}-\x{218F}\x{2427}-\x{243F}\x{244B}-\x{245F}\x{2B74}-\x{2B75}\x{2B96}\x{2CF4}-\x{2CF8}\x{2D26}\x{2D28}-\x{2D2C}\x{2D2E}-\x{2D2F}\x{2D68}-\x{2D6E}\x{2D71}-\x{2D7E}\x{2D97}-\x{2D9F}\x{2DA7}\x{2DAF}\x{2DB7}\x{2DBF}\x{2DC7}\x{2DCF}\x{2DD7}\x{2DDF}\x{2E5E}-\x{2E7F}\x{2E9A}\x{2EF4}-\x{2EFF}\x{2FD6}-\x{2FEF}\x{2FFC}-\x{2FFF}\x{3040}\x{3097}-\x{3098}\x{3100}-\x{3104}\x{3130}\x{318F}\x{31E4}-\x{31EF}\x{321F}\x{A48D}-\x{A48F}\x{A4C7}-\x{A4CF}\x{A62C}-\x{A63F}\x{A6F8}-\x{A6FF}\x{A7CB}-\x{A7CF}\x{A7D2}\x{A7D4}\x{A7DA}-\x{A7F1}\x{A82D}-\x{A82F}\x{A83A}-\x{A83F}\x{A878}-\x{A87F}\x{A8C6}-\x{A8CD}\x{A8DA}-\x{A8DF}\x{A954}-\x{A95E}\x{A97D}-\x{A97F}\x{A9CE}\x{A9DA}-\x{A9DD}\x{A9FF}\x{AA37}-\x{AA3F}\x{AA4E}-\x{AA4F}\x{AA5A}-\x{AA5B}\x{AAC3}-\x{AADA}\x{AAF7}-\x{AB00}\x{AB07}-\x{AB08}\x{AB0F}-\x{AB10}\x{AB17}-\x{AB1F}\x{AB27}\x{AB2F}\x{AB6C}-\x{AB6F}\x{ABEE}-\x{ABEF}\x{ABFA}-\x{ABFF}\x{D7A4}-\x{D7AF}\x{D7C7}-\x{D7CA}\x{D7FC}-\x{D7FF}\x{FA6E}-\x{FA6F}\x{FADA}-\x{FAFF}\x{FB07}-\x{FB12}\x{FB18}-\x{FB1C}\x{FB37}\x{FB3D}\x{FB3F}\x{FB42}\x{FB45}\x{FBC3}-\x{FBD2}\x{FD90}-\x{FD91}\x{FDC8}-\x{FDCE}\x{FDD0}-\x{FDEF}\x{FE1A}-\x{FE1F}\x{FE53}\x{FE67}\x{FE6C}-\x{FE6F}\x{FE75}\x{FEFD}-\x{FEFE}\x{FF00}\x{FFBF}-\x{FFC1}\x{FFC8}-\x{FFC9}\x{FFD0}-\x{FFD1}\x{FFD8}-\x{FFD9}\x{FFDD}-\x{FFDF}\x{FFE7}\x{FFEF}-\x{FFF8}\x{FFFE}-\x{FFFF}\x{1000C}\x{10027}\x{1003B}\x{1003E}\x{1004E}-\x{1004F}\x{1005E}-\x{1007F}\x{100FB}-\x{100FF}\x{10103}-\x{10106}\x{10134}-\x{10136}\x{1018F}\x{1019D}-\x{1019F}\x{101A1}-\x{101CF}\x{101FE}-\x{1027F}\x{1029D}-\x{1029F}\x{102D1}-\x{102DF}\x{102FC}-\x{102FF}\x{10324}-\x{1032C}\x{1034B}-\x{1034F}\x{1037B}-\x{1037F}\x{1039E}\x{103C4}-\x{103C7}\x{103D6}-\x{103FF}\x{1049E}-\x{1049F}\x{104AA}-\x{104AF}\x{104D4}-\x{104D7}\x{104FC}-\x{104FF}\x{10528}-\x{1052F}\x{10564}-\x{1056E}\x{1057B}\x{1058B}\x{10593}\x{10596}\x{105A2}\x{105B2}\x{105BA}\x{105BD}-\x{105FF}\x{10737}-\x{1073F}\x{10756}-\x{1075F}\x{10768}-\x{1077F}\x{10786}\x{107B1}\x{107BB}-\x{107FF}\x{10806}-\x{10807}\x{10809}\x{10836}\x{10839}-\x{1083B}\x{1083D}-\x{1083E}\x{10856}\x{1089F}-\x{108A6}\x{108B0}-\x{108DF}\x{108F3}\x{108F6}-\x{108FA}\x{1091C}-\x{1091E}\x{1093A}-\x{1093E}\x{10940}-\x{1097F}\x{109B8}-\x{109BB}\x{109D0}-\x{109D1}\x{10A04}\x{10A07}-\x{10A0B}\x{10A14}\x{10A18}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A49}-\x{10A4F}\x{10A59}-\x{10A5F}\x{10AA0}-\x{10ABF}\x{10AE7}-\x{10AEA}\x{10AF7}-\x{10AFF}\x{10B36}-\x{10B38}\x{10B56}-\x{10B57}\x{10B73}-\x{10B77}\x{10B92}-\x{10B98}\x{10B9D}-\x{10BA8}\x{10BB0}-\x{10BFF}\x{10C49}-\x{10C7F}\x{10CB3}-\x{10CBF}\x{10CF3}-\x{10CF9}\x{10D28}-\x{10D2F}\x{10D3A}-\x{10E5F}\x{10E7F}\x{10EAA}\x{10EAE}-\x{10EAF}\x{10EB2}-\x{10EFF}\x{10F28}-\x{10F2F}\x{10F5A}-\x{10F6F}\x{10F8A}-\x{10FAF}\x{10FCC}-\x{10FDF}\x{10FF7}-\x{10FFF}\x{1104E}-\x{11051}\x{11076}-\x{1107E}\x{110C3}-\x{110CC}\x{110CE}-\x{110CF}\x{110E9}-\x{110EF}\x{110FA}-\x{110FF}\x{11135}\x{11148}-\x{1114F}\x{11177}-\x{1117F}\x{111E0}\x{111F5}-\x{111FF}\x{11212}\x{1123F}-\x{1127F}\x{11287}\x{11289}\x{1128E}\x{1129E}\x{112AA}-\x{112AF}\x{112EB}-\x{112EF}\x{112FA}-\x{112FF}\x{11304}\x{1130D}-\x{1130E}\x{11311}-\x{11312}\x{11329}\x{11331}\x{11334}\x{1133A}\x{11345}-\x{11346}\x{11349}-\x{1134A}\x{1134E}-\x{1134F}\x{11351}-\x{11356}\x{11358}-\x{1135C}\x{11364}-\x{11365}\x{1136D}-\x{1136F}\x{11375}-\x{113FF}\x{1145C}\x{11462}-\x{1147F}\x{114C8}-\x{114CF}\x{114DA}-\x{1157F}\x{115B6}-\x{115B7}\x{115DE}-\x{115FF}\x{11645}-\x{1164F}\x{1165A}-\x{1165F}\x{1166D}-\x{1167F}\x{116BA}-\x{116BF}\x{116CA}-\x{116FF}\x{1171B}-\x{1171C}\x{1172C}-\x{1172F}\x{11747}-\x{117FF}\x{1183C}-\x{1189F}\x{118F3}-\x{118FE}\x{11907}-\x{11908}\x{1190A}-\x{1190B}\x{11914}\x{11917}\x{11936}\x{11939}-\x{1193A}\x{11947}-\x{1194F}\x{1195A}-\x{1199F}\x{119A8}-\x{119A9}\x{119D8}-\x{119D9}\x{119E5}-\x{119FF}\x{11A48}-\x{11A4F}\x{11AA3}-\x{11AAF}\x{11AF9}-\x{11BFF}\x{11C09}\x{11C37}\x{11C46}-\x{11C4F}\x{11C6D}-\x{11C6F}\x{11C90}-\x{11C91}\x{11CA8}\x{11CB7}-\x{11CFF}\x{11D07}\x{11D0A}\x{11D37}-\x{11D39}\x{11D3B}\x{11D3E}\x{11D48}-\x{11D4F}\x{11D5A}-\x{11D5F}\x{11D66}\x{11D69}\x{11D8F}\x{11D92}\x{11D99}-\x{11D9F}\x{11DAA}-\x{11EDF}\x{11EF9}-\x{11FAF}\x{11FB1}-\x{11FBF}\x{11FF2}-\x{11FFE}\x{1239A}-\x{123FF}\x{1246F}\x{12475}-\x{1247F}\x{12544}-\x{12F8F}\x{12FF3}-\x{12FFF}\x{1342F}\x{13439}-\x{143FF}\x{14647}-\x{167FF}\x{16A39}-\x{16A3F}\x{16A5F}\x{16A6A}-\x{16A6D}\x{16ABF}\x{16ACA}-\x{16ACF}\x{16AEE}-\x{16AEF}\x{16AF6}-\x{16AFF}\x{16B46}-\x{16B4F}\x{16B5A}\x{16B62}\x{16B78}-\x{16B7C}\x{16B90}-\x{16E3F}\x{16E9B}-\x{16EFF}\x{16F4B}-\x{16F4E}\x{16F88}-\x{16F8E}\x{16FA0}-\x{16FDF}\x{16FE5}-\x{16FEF}\x{16FF2}-\x{16FFF}\x{187F8}-\x{187FF}\x{18CD6}-\x{18CFF}\x{18D09}-\x{1AFEF}\x{1AFF4}\x{1AFFC}\x{1AFFF}\x{1B123}-\x{1B14F}\x{1B153}-\x{1B163}\x{1B168}-\x{1B16F}\x{1B2FC}-\x{1BBFF}\x{1BC6B}-\x{1BC6F}\x{1BC7D}-\x{1BC7F}\x{1BC89}-\x{1BC8F}\x{1BC9A}-\x{1BC9B}\x{1BCA4}-\x{1CEFF}\x{1CF2E}-\x{1CF2F}\x{1CF47}-\x{1CF4F}\x{1CFC4}-\x{1CFFF}\x{1D0F6}-\x{1D0FF}\x{1D127}-\x{1D128}\x{1D1EB}-\x{1D1FF}\x{1D246}-\x{1D2DF}\x{1D2F4}-\x{1D2FF}\x{1D357}-\x{1D35F}\x{1D379}-\x{1D3FF}\x{1D455}\x{1D49D}\x{1D4A0}-\x{1D4A1}\x{1D4A3}-\x{1D4A4}\x{1D4A7}-\x{1D4A8}\x{1D4AD}\x{1D4BA}\x{1D4BC}\x{1D4C4}\x{1D506}\x{1D50B}-\x{1D50C}\x{1D515}\x{1D51D}\x{1D53A}\x{1D53F}\x{1D545}\x{1D547}-\x{1D549}\x{1D551}\x{1D6A6}-\x{1D6A7}\x{1D7CC}-\x{1D7CD}\x{1DA8C}-\x{1DA9A}\x{1DAA0}\x{1DAB0}-\x{1DEFF}\x{1DF1F}-\x{1DFFF}\x{1E007}\x{1E019}-\x{1E01A}\x{1E022}\x{1E025}\x{1E02B}-\x{1E0FF}\x{1E12D}-\x{1E12F}\x{1E13E}-\x{1E13F}\x{1E14A}-\x{1E14D}\x{1E150}-\x{1E28F}\x{1E2AF}-\x{1E2BF}\x{1E2FA}-\x{1E2FE}\x{1E300}-\x{1E7DF}\x{1E7E7}\x{1E7EC}\x{1E7EF}\x{1E7FF}\x{1E8C5}-\x{1E8C6}\x{1E8D7}-\x{1E8FF}\x{1E94C}-\x{1E94F}\x{1E95A}-\x{1E95D}\x{1E960}-\x{1EC70}\x{1ECB5}-\x{1ED00}\x{1ED3E}-\x{1EDFF}\x{1EE04}\x{1EE20}\x{1EE23}\x{1EE25}-\x{1EE26}\x{1EE28}\x{1EE33}\x{1EE38}\x{1EE3A}\x{1EE3C}-\x{1EE41}\x{1EE43}-\x{1EE46}\x{1EE48}\x{1EE4A}\x{1EE4C}\x{1EE50}\x{1EE53}\x{1EE55}-\x{1EE56}\x{1EE58}\x{1EE5A}\x{1EE5C}\x{1EE5E}\x{1EE60}\x{1EE63}\x{1EE65}-\x{1EE66}\x{1EE6B}\x{1EE73}\x{1EE78}\x{1EE7D}\x{1EE7F}\x{1EE8A}\x{1EE9C}-\x{1EEA0}\x{1EEA4}\x{1EEAA}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EFFF}\x{1F02C}-\x{1F02F}\x{1F094}-\x{1F09F}\x{1F0AF}-\x{1F0B0}\x{1F0C0}\x{1F0D0}\x{1F0F6}-\x{1F0FF}\x{1F1AE}-\x{1F1E5}\x{1F203}-\x{1F20F}\x{1F23C}-\x{1F23F}\x{1F249}-\x{1F24F}\x{1F252}-\x{1F25F}\x{1F266}-\x{1F2FF}\x{1F6D8}-\x{1F6DC}\x{1F6ED}-\x{1F6EF}\x{1F6FD}-\x{1F6FF}\x{1F774}-\x{1F77F}\x{1F7D9}-\x{1F7DF}\x{1F7EC}-\x{1F7EF}\x{1F7F1}-\x{1F7FF}\x{1F80C}-\x{1F80F}\x{1F848}-\x{1F84F}\x{1F85A}-\x{1F85F}\x{1F888}-\x{1F88F}\x{1F8AE}-\x{1F8AF}\x{1F8B2}-\x{1F8FF}\x{1FA54}-\x{1FA5F}\x{1FA6E}-\x{1FA6F}\x{1FA75}-\x{1FA77}\x{1FA7D}-\x{1FA7F}\x{1FA87}-\x{1FA8F}\x{1FAAD}-\x{1FAAF}\x{1FABB}-\x{1FABF}\x{1FAC6}-\x{1FACF}\x{1FADA}-\x{1FADF}\x{1FAE8}-\x{1FAEF}\x{1FAF7}-\x{1FAFF}\x{1FB93}\x{1FBCB}-\x{1FBEF}\x{1FBFA}-\x{1FFFF}\x{2A6E0}-\x{2A6FF}\x{2B739}-\x{2B73F}\x{2B81E}-\x{2B81F}\x{2CEA2}-\x{2CEAF}\x{2EBE1}-\x{2F7FF}\x{2FA1E}-\x{2FFFF}\x{3134B}-\x{E0000}\x{E0002}-\x{E001F}\x{E0080}-\x{E00FF}\x{E01F0}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}',
Replace With: Select
'Bidi_Control' =>
'\x{061C}' .
'\x{200E}-\x{200F}' .
'\x{202A}-\x{202E}' .
'\x{2066}-\x{2069}',
'Case_Ignorable' =>
'\x{0027}' .
'\x{002E}' .
'\x{003A}' .
'\x{005E}' .
'\x{0060}' .
'\x{00A8}' .
'\x{00AD}' .
'\x{00AF}' .
'\x{00B4}' .
'\x{00B7}' .
'\x{00B8}' .
'\x{02B0}-\x{02C1}' .
'\x{02C2}-\x{02C5}' .
'\x{02C6}-\x{02D1}' .
'\x{02D2}-\x{02DF}' .
'\x{02E0}-\x{02E4}' .
'\x{02E5}-\x{02EB}' .
'\x{02EC}' .
'\x{02ED}' .
'\x{02EE}' .
'\x{02EF}-\x{02FF}' .
'\x{0300}-\x{036F}' .
'\x{0374}' .
'\x{0375}' .
'\x{037A}' .
'\x{0384}-\x{0385}' .
'\x{0387}' .
'\x{0483}-\x{0487}' .
'\x{0488}-\x{0489}' .
'\x{0559}' .
'\x{055F}' .
'\x{0591}-\x{05BD}' .
'\x{05BF}' .
'\x{05C1}-\x{05C2}' .
'\x{05C4}-\x{05C5}' .
'\x{05C7}' .
'\x{05F4}' .
'\x{0600}-\x{0605}' .
'\x{0610}-\x{061A}' .
'\x{061C}' .
'\x{0640}' .
'\x{064B}-\x{065F}' .
'\x{0670}' .
'\x{06D6}-\x{06DC}' .
'\x{06DD}' .
'\x{06DF}-\x{06E4}' .
'\x{06E5}-\x{06E6}' .
'\x{06E7}-\x{06E8}' .
'\x{06EA}-\x{06ED}' .
'\x{070F}' .
'\x{0711}' .
'\x{0730}-\x{074A}' .
'\x{07A6}-\x{07B0}' .
'\x{07EB}-\x{07F3}' .
'\x{07F4}-\x{07F5}' .
'\x{07FA}' .
'\x{07FD}' .
'\x{0816}-\x{0819}' .
'\x{081A}' .
'\x{081B}-\x{0823}' .
'\x{0824}' .
'\x{0825}-\x{0827}' .
'\x{0828}' .
'\x{0829}-\x{082D}' .
'\x{0859}-\x{085B}' .
'\x{0888}' .
'\x{0890}-\x{0891}' .
'\x{0898}-\x{089F}' .
'\x{08C9}' .
'\x{08CA}-\x{08E1}' .
'\x{08E2}' .
'\x{08E3}-\x{0902}' .
'\x{093A}' .
'\x{093C}' .
'\x{0941}-\x{0948}' .
'\x{094D}' .
'\x{0951}-\x{0957}' .
'\x{0962}-\x{0963}' .
'\x{0971}' .
'\x{0981}' .
'\x{09BC}' .
'\x{09C1}-\x{09C4}' .
'\x{09CD}' .
'\x{09E2}-\x{09E3}' .
'\x{09FE}' .
'\x{0A01}-\x{0A02}' .
'\x{0A3C}' .
'\x{0A41}-\x{0A42}' .
'\x{0A47}-\x{0A48}' .
'\x{0A4B}-\x{0A4D}' .
'\x{0A51}' .
'\x{0A70}-\x{0A71}' .
'\x{0A75}' .
'\x{0A81}-\x{0A82}' .
'\x{0ABC}' .
'\x{0AC1}-\x{0AC5}' .
'\x{0AC7}-\x{0AC8}' .
'\x{0ACD}' .
'\x{0AE2}-\x{0AE3}' .
'\x{0AFA}-\x{0AFF}' .
'\x{0B01}' .
'\x{0B3C}' .
'\x{0B3F}' .
'\x{0B41}-\x{0B44}' .
'\x{0B4D}' .
'\x{0B55}-\x{0B56}' .
'\x{0B62}-\x{0B63}' .
'\x{0B82}' .
'\x{0BC0}' .
'\x{0BCD}' .
'\x{0C00}' .
'\x{0C04}' .
'\x{0C3C}' .
'\x{0C3E}-\x{0C40}' .
'\x{0C46}-\x{0C48}' .
'\x{0C4A}-\x{0C4D}' .
'\x{0C55}-\x{0C56}' .
'\x{0C62}-\x{0C63}' .
'\x{0C81}' .
'\x{0CBC}' .
'\x{0CBF}' .
'\x{0CC6}' .
'\x{0CCC}-\x{0CCD}' .
'\x{0CE2}-\x{0CE3}' .
'\x{0D00}-\x{0D01}' .
'\x{0D3B}-\x{0D3C}' .
'\x{0D41}-\x{0D44}' .
'\x{0D4D}' .
'\x{0D62}-\x{0D63}' .
'\x{0D81}' .
'\x{0DCA}' .
'\x{0DD2}-\x{0DD4}' .
'\x{0DD6}' .
'\x{0E31}' .
'\x{0E34}-\x{0E3A}' .
'\x{0E46}' .
'\x{0E47}-\x{0E4E}' .
'\x{0EB1}' .
'\x{0EB4}-\x{0EBC}' .
'\x{0EC6}' .
'\x{0EC8}-\x{0ECE}' .
'\x{0F18}-\x{0F19}' .
'\x{0F35}' .
'\x{0F37}' .
'\x{0F39}' .
'\x{0F71}-\x{0F7E}' .
'\x{0F80}-\x{0F84}' .
'\x{0F86}-\x{0F87}' .
'\x{0F8D}-\x{0F97}' .
'\x{0F99}-\x{0FBC}' .
'\x{0FC6}' .
'\x{102D}-\x{1030}' .
'\x{1032}-\x{1037}' .
'\x{1039}-\x{103A}' .
'\x{103D}-\x{103E}' .
'\x{1058}-\x{1059}' .
'\x{105E}-\x{1060}' .
'\x{1071}-\x{1074}' .
'\x{1082}' .
'\x{1085}-\x{1086}' .
'\x{108D}' .
'\x{109D}' .
'\x{10FC}' .
'\x{135D}-\x{135F}' .
'\x{1712}-\x{1714}' .
'\x{1732}-\x{1733}' .
'\x{1752}-\x{1753}' .
'\x{1772}-\x{1773}' .
'\x{17B4}-\x{17B5}' .
'\x{17B7}-\x{17BD}' .
'\x{17C6}' .
'\x{17C9}-\x{17D3}' .
'\x{17D7}' .
'\x{17DD}' .
'\x{180B}-\x{180D}' .
'\x{180E}' .
'\x{180F}' .
'\x{1843}' .
'\x{1885}-\x{1886}' .
'\x{18A9}' .
'\x{1920}-\x{1922}' .
'\x{1927}-\x{1928}' .
'\x{1932}' .
'\x{1939}-\x{193B}' .
'\x{1A17}-\x{1A18}' .
'\x{1A1B}' .
'\x{1A56}' .
'\x{1A58}-\x{1A5E}' .
'\x{1A60}' .
'\x{1A62}' .
'\x{1A65}-\x{1A6C}' .
'\x{1A73}-\x{1A7C}' .
'\x{1A7F}' .
'\x{1AA7}' .
'\x{1AB0}-\x{1ABD}' .
'\x{1ABE}' .
'\x{1ABF}-\x{1ACE}' .
'\x{1B00}-\x{1B03}' .
'\x{1B34}' .
'\x{1B36}-\x{1B3A}' .
'\x{1B3C}' .
'\x{1B42}' .
'\x{1B6B}-\x{1B73}' .
'\x{1B80}-\x{1B81}' .
'\x{1BA2}-\x{1BA5}' .
'\x{1BA8}-\x{1BA9}' .
'\x{1BAB}-\x{1BAD}' .
'\x{1BE6}' .
'\x{1BE8}-\x{1BE9}' .
'\x{1BED}' .
'\x{1BEF}-\x{1BF1}' .
'\x{1C2C}-\x{1C33}' .
'\x{1C36}-\x{1C37}' .
'\x{1C78}-\x{1C7D}' .
'\x{1CD0}-\x{1CD2}' .
'\x{1CD4}-\x{1CE0}' .
'\x{1CE2}-\x{1CE8}' .
'\x{1CED}' .
'\x{1CF4}' .
'\x{1CF8}-\x{1CF9}' .
'\x{1D2C}-\x{1D6A}' .
'\x{1D78}' .
'\x{1D9B}-\x{1DBF}' .
'\x{1DC0}-\x{1DFF}' .
'\x{1FBD}' .
'\x{1FBF}-\x{1FC1}' .
'\x{1FCD}-\x{1FCF}' .
'\x{1FDD}-\x{1FDF}' .
'\x{1FED}-\x{1FEF}' .
'\x{1FFD}-\x{1FFE}' .
'\x{200B}-\x{200F}' .
'\x{2018}' .
'\x{2019}' .
'\x{2024}' .
'\x{2027}' .
'\x{202A}-\x{202E}' .
'\x{2060}-\x{2064}' .
'\x{2066}-\x{206F}' .
'\x{2071}' .
'\x{207F}' .
'\x{2090}-\x{209C}' .
'\x{20D0}-\x{20DC}' .
'\x{20DD}-\x{20E0}' .
'\x{20E1}' .
'\x{20E2}-\x{20E4}' .
'\x{20E5}-\x{20F0}' .
'\x{2C7C}-\x{2C7D}' .
'\x{2CEF}-\x{2CF1}' .
'\x{2D6F}' .
'\x{2D7F}' .
'\x{2DE0}-\x{2DFF}' .
'\x{2E2F}' .
'\x{3005}' .
'\x{302A}-\x{302D}' .
'\x{3031}-\x{3035}' .
'\x{303B}' .
'\x{3099}-\x{309A}' .
'\x{309B}-\x{309C}' .
'\x{309D}-\x{309E}' .
'\x{30FC}-\x{30FE}' .
'\x{A015}' .
'\x{A4F8}-\x{A4FD}' .
'\x{A60C}' .
'\x{A66F}' .
'\x{A670}-\x{A672}' .
'\x{A674}-\x{A67D}' .
'\x{A67F}' .
'\x{A69C}-\x{A69D}' .
'\x{A69E}-\x{A69F}' .
'\x{A6F0}-\x{A6F1}' .
'\x{A700}-\x{A716}' .
'\x{A717}-\x{A71F}' .
'\x{A720}-\x{A721}' .
'\x{A770}' .
'\x{A788}' .
'\x{A789}-\x{A78A}' .
'\x{A7F2}-\x{A7F4}' .
'\x{A7F8}-\x{A7F9}' .
'\x{A802}' .
'\x{A806}' .
'\x{A80B}' .
'\x{A825}-\x{A826}' .
'\x{A82C}' .
'\x{A8C4}-\x{A8C5}' .
'\x{A8E0}-\x{A8F1}' .
'\x{A8FF}' .
'\x{A926}-\x{A92D}' .
'\x{A947}-\x{A951}' .
'\x{A980}-\x{A982}' .
'\x{A9B3}' .
'\x{A9B6}-\x{A9B9}' .
'\x{A9BC}-\x{A9BD}' .
'\x{A9CF}' .
'\x{A9E5}' .
'\x{A9E6}' .
'\x{AA29}-\x{AA2E}' .
'\x{AA31}-\x{AA32}' .
'\x{AA35}-\x{AA36}' .
'\x{AA43}' .
'\x{AA4C}' .
'\x{AA70}' .
'\x{AA7C}' .
'\x{AAB0}' .
'\x{AAB2}-\x{AAB4}' .
'\x{AAB7}-\x{AAB8}' .
'\x{AABE}-\x{AABF}' .
'\x{AAC1}' .
'\x{AADD}' .
'\x{AAEC}-\x{AAED}' .
'\x{AAF3}-\x{AAF4}' .
'\x{AAF6}' .
'\x{AB5B}' .
'\x{AB5C}-\x{AB5F}' .
'\x{AB69}' .
'\x{AB6A}-\x{AB6B}' .
'\x{ABE5}' .
'\x{ABE8}' .
'\x{ABED}' .
'\x{FB1E}' .
'\x{FBB2}-\x{FBC2}' .
'\x{FE00}-\x{FE0F}' .
'\x{FE13}' .
'\x{FE20}-\x{FE2F}' .
'\x{FE52}' .
'\x{FE55}' .
'\x{FEFF}' .
'\x{FF07}' .
'\x{FF0E}' .
'\x{FF1A}' .
'\x{FF3E}' .
'\x{FF40}' .
'\x{FF70}' .
'\x{FF9E}-\x{FF9F}' .
'\x{FFE3}' .
'\x{FFF9}-\x{FFFB}' .
'\x{101FD}' .
'\x{102E0}' .
'\x{10376}-\x{1037A}' .
'\x{10780}-\x{10785}' .
'\x{10787}-\x{107B0}' .
'\x{107B2}-\x{107BA}' .
'\x{10A01}-\x{10A03}' .
'\x{10A05}-\x{10A06}' .
'\x{10A0C}-\x{10A0F}' .
'\x{10A38}-\x{10A3A}' .
'\x{10A3F}' .
'\x{10AE5}-\x{10AE6}' .
'\x{10D24}-\x{10D27}' .
'\x{10EAB}-\x{10EAC}' .
'\x{10EFD}-\x{10EFF}' .
'\x{10F46}-\x{10F50}' .
'\x{10F82}-\x{10F85}' .
'\x{11001}' .
'\x{11038}-\x{11046}' .
'\x{11070}' .
'\x{11073}-\x{11074}' .
'\x{1107F}-\x{11081}' .
'\x{110B3}-\x{110B6}' .
'\x{110B9}-\x{110BA}' .
'\x{110BD}' .
'\x{110C2}' .
'\x{110CD}' .
'\x{11100}-\x{11102}' .
'\x{11127}-\x{1112B}' .
'\x{1112D}-\x{11134}' .
'\x{11173}' .
'\x{11180}-\x{11181}' .
'\x{111B6}-\x{111BE}' .
'\x{111C9}-\x{111CC}' .
'\x{111CF}' .
'\x{1122F}-\x{11231}' .
'\x{11234}' .
'\x{11236}-\x{11237}' .
'\x{1123E}' .
'\x{11241}' .
'\x{112DF}' .
'\x{112E3}-\x{112EA}' .
'\x{11300}-\x{11301}' .
'\x{1133B}-\x{1133C}' .
'\x{11340}' .
'\x{11366}-\x{1136C}' .
'\x{11370}-\x{11374}' .
'\x{11438}-\x{1143F}' .
'\x{11442}-\x{11444}' .
'\x{11446}' .
'\x{1145E}' .
'\x{114B3}-\x{114B8}' .
'\x{114BA}' .
'\x{114BF}-\x{114C0}' .
'\x{114C2}-\x{114C3}' .
'\x{115B2}-\x{115B5}' .
'\x{115BC}-\x{115BD}' .
'\x{115BF}-\x{115C0}' .
'\x{115DC}-\x{115DD}' .
'\x{11633}-\x{1163A}' .
'\x{1163D}' .
'\x{1163F}-\x{11640}' .
'\x{116AB}' .
'\x{116AD}' .
'\x{116B0}-\x{116B5}' .
'\x{116B7}' .
'\x{1171D}-\x{1171F}' .
'\x{11722}-\x{11725}' .
'\x{11727}-\x{1172B}' .
'\x{1182F}-\x{11837}' .
'\x{11839}-\x{1183A}' .
'\x{1193B}-\x{1193C}' .
'\x{1193E}' .
'\x{11943}' .
'\x{119D4}-\x{119D7}' .
'\x{119DA}-\x{119DB}' .
'\x{119E0}' .
'\x{11A01}-\x{11A0A}' .
'\x{11A33}-\x{11A38}' .
'\x{11A3B}-\x{11A3E}' .
'\x{11A47}' .
'\x{11A51}-\x{11A56}' .
'\x{11A59}-\x{11A5B}' .
'\x{11A8A}-\x{11A96}' .
'\x{11A98}-\x{11A99}' .
'\x{11C30}-\x{11C36}' .
'\x{11C38}-\x{11C3D}' .
'\x{11C3F}' .
'\x{11C92}-\x{11CA7}' .
'\x{11CAA}-\x{11CB0}' .
'\x{11CB2}-\x{11CB3}' .
'\x{11CB5}-\x{11CB6}' .
'\x{11D31}-\x{11D36}' .
'\x{11D3A}' .
'\x{11D3C}-\x{11D3D}' .
'\x{11D3F}-\x{11D45}' .
'\x{11D47}' .
'\x{11D90}-\x{11D91}' .
'\x{11D95}' .
'\x{11D97}' .
'\x{11EF3}-\x{11EF4}' .
'\x{11F00}-\x{11F01}' .
'\x{11F36}-\x{11F3A}' .
'\x{11F40}' .
'\x{11F42}' .
'\x{13430}-\x{1343F}' .
'\x{13440}' .
'\x{13447}-\x{13455}' .
'\x{16AF0}-\x{16AF4}' .
'\x{16B30}-\x{16B36}' .
'\x{16B40}-\x{16B43}' .
'\x{16F4F}' .
'\x{16F8F}-\x{16F92}' .
'\x{16F93}-\x{16F9F}' .
'\x{16FE0}-\x{16FE1}' .
'\x{16FE3}' .
'\x{16FE4}' .
'\x{1AFF0}-\x{1AFF3}' .
'\x{1AFF5}-\x{1AFFB}' .
'\x{1AFFD}-\x{1AFFE}' .
'\x{1BC9D}-\x{1BC9E}' .
'\x{1BCA0}-\x{1BCA3}' .
'\x{1CF00}-\x{1CF2D}' .
'\x{1CF30}-\x{1CF46}' .
'\x{1D167}-\x{1D169}' .
'\x{1D173}-\x{1D17A}' .
'\x{1D17B}-\x{1D182}' .
'\x{1D185}-\x{1D18B}' .
'\x{1D1AA}-\x{1D1AD}' .
'\x{1D242}-\x{1D244}' .
'\x{1DA00}-\x{1DA36}' .
'\x{1DA3B}-\x{1DA6C}' .
'\x{1DA75}' .
'\x{1DA84}' .
'\x{1DA9B}-\x{1DA9F}' .
'\x{1DAA1}-\x{1DAAF}' .
'\x{1E000}-\x{1E006}' .
'\x{1E008}-\x{1E018}' .
'\x{1E01B}-\x{1E021}' .
'\x{1E023}-\x{1E024}' .
'\x{1E026}-\x{1E02A}' .
'\x{1E030}-\x{1E06D}' .
'\x{1E08F}' .
'\x{1E130}-\x{1E136}' .
'\x{1E137}-\x{1E13D}' .
'\x{1E2AE}' .
'\x{1E2EC}-\x{1E2EF}' .
'\x{1E4EB}' .
'\x{1E4EC}-\x{1E4EF}' .
'\x{1E8D0}-\x{1E8D6}' .
'\x{1E944}-\x{1E94A}' .
'\x{1E94B}' .
'\x{1F3FB}-\x{1F3FF}' .
'\x{E0001}' .
'\x{E0020}-\x{E007F}' .
'\x{E0100}-\x{E01EF}',
'Cn' =>
'\x{0378}-\x{0379}' .
'\x{0380}-\x{0383}' .
'\x{038B}' .
'\x{038D}' .
'\x{03A2}' .
'\x{0530}' .
'\x{0557}-\x{0558}' .
'\x{058B}-\x{058C}' .
'\x{0590}' .
'\x{05C8}-\x{05CF}' .
'\x{05EB}-\x{05EE}' .
'\x{05F5}-\x{05FF}' .
'\x{070E}' .
'\x{074B}-\x{074C}' .
'\x{07B2}-\x{07BF}' .
'\x{07FB}-\x{07FC}' .
'\x{082E}-\x{082F}' .
'\x{083F}' .
'\x{085C}-\x{085D}' .
'\x{085F}' .
'\x{086B}-\x{086F}' .
'\x{088F}' .
'\x{0892}-\x{0897}' .
'\x{0984}' .
'\x{098D}-\x{098E}' .
'\x{0991}-\x{0992}' .
'\x{09A9}' .
'\x{09B1}' .
'\x{09B3}-\x{09B5}' .
'\x{09BA}-\x{09BB}' .
'\x{09C5}-\x{09C6}' .
'\x{09C9}-\x{09CA}' .
'\x{09CF}-\x{09D6}' .
'\x{09D8}-\x{09DB}' .
'\x{09DE}' .
'\x{09E4}-\x{09E5}' .
'\x{09FF}-\x{0A00}' .
'\x{0A04}' .
'\x{0A0B}-\x{0A0E}' .
'\x{0A11}-\x{0A12}' .
'\x{0A29}' .
'\x{0A31}' .
'\x{0A34}' .
'\x{0A37}' .
'\x{0A3A}-\x{0A3B}' .
'\x{0A3D}' .
'\x{0A43}-\x{0A46}' .
'\x{0A49}-\x{0A4A}' .
'\x{0A4E}-\x{0A50}' .
'\x{0A52}-\x{0A58}' .
'\x{0A5D}' .
'\x{0A5F}-\x{0A65}' .
'\x{0A77}-\x{0A80}' .
'\x{0A84}' .
'\x{0A8E}' .
'\x{0A92}' .
'\x{0AA9}' .
'\x{0AB1}' .
'\x{0AB4}' .
'\x{0ABA}-\x{0ABB}' .
'\x{0AC6}' .
'\x{0ACA}' .
'\x{0ACE}-\x{0ACF}' .
'\x{0AD1}-\x{0ADF}' .
'\x{0AE4}-\x{0AE5}' .
'\x{0AF2}-\x{0AF8}' .
'\x{0B00}' .
'\x{0B04}' .
'\x{0B0D}-\x{0B0E}' .
'\x{0B11}-\x{0B12}' .
'\x{0B29}' .
'\x{0B31}' .
'\x{0B34}' .
'\x{0B3A}-\x{0B3B}' .
'\x{0B45}-\x{0B46}' .
'\x{0B49}-\x{0B4A}' .
'\x{0B4E}-\x{0B54}' .
'\x{0B58}-\x{0B5B}' .
'\x{0B5E}' .
'\x{0B64}-\x{0B65}' .
'\x{0B78}-\x{0B81}' .
'\x{0B84}' .
'\x{0B8B}-\x{0B8D}' .
'\x{0B91}' .
'\x{0B96}-\x{0B98}' .
'\x{0B9B}' .
'\x{0B9D}' .
'\x{0BA0}-\x{0BA2}' .
'\x{0BA5}-\x{0BA7}' .
'\x{0BAB}-\x{0BAD}' .
'\x{0BBA}-\x{0BBD}' .
'\x{0BC3}-\x{0BC5}' .
'\x{0BC9}' .
'\x{0BCE}-\x{0BCF}' .
'\x{0BD1}-\x{0BD6}' .
'\x{0BD8}-\x{0BE5}' .
'\x{0BFB}-\x{0BFF}' .
'\x{0C0D}' .
'\x{0C11}' .
'\x{0C29}' .
'\x{0C3A}-\x{0C3B}' .
'\x{0C45}' .
'\x{0C49}' .
'\x{0C4E}-\x{0C54}' .
'\x{0C57}' .
'\x{0C5B}-\x{0C5C}' .
'\x{0C5E}-\x{0C5F}' .
'\x{0C64}-\x{0C65}' .
'\x{0C70}-\x{0C76}' .
'\x{0C8D}' .
'\x{0C91}' .
'\x{0CA9}' .
'\x{0CB4}' .
'\x{0CBA}-\x{0CBB}' .
'\x{0CC5}' .
'\x{0CC9}' .
'\x{0CCE}-\x{0CD4}' .
'\x{0CD7}-\x{0CDC}' .
'\x{0CDF}' .
'\x{0CE4}-\x{0CE5}' .
'\x{0CF0}' .
'\x{0CF4}-\x{0CFF}' .
'\x{0D0D}' .
'\x{0D11}' .
'\x{0D45}' .
'\x{0D49}' .
'\x{0D50}-\x{0D53}' .
'\x{0D64}-\x{0D65}' .
'\x{0D80}' .
'\x{0D84}' .
'\x{0D97}-\x{0D99}' .
'\x{0DB2}' .
'\x{0DBC}' .
'\x{0DBE}-\x{0DBF}' .
'\x{0DC7}-\x{0DC9}' .
'\x{0DCB}-\x{0DCE}' .
'\x{0DD5}' .
'\x{0DD7}' .
'\x{0DE0}-\x{0DE5}' .
'\x{0DF0}-\x{0DF1}' .
'\x{0DF5}-\x{0E00}' .
'\x{0E3B}-\x{0E3E}' .
'\x{0E5C}-\x{0E80}' .
'\x{0E83}' .
'\x{0E85}' .
'\x{0E8B}' .
'\x{0EA4}' .
'\x{0EA6}' .
'\x{0EBE}-\x{0EBF}' .
'\x{0EC5}' .
'\x{0EC7}' .
'\x{0ECF}' .
'\x{0EDA}-\x{0EDB}' .
'\x{0EE0}-\x{0EFF}' .
'\x{0F48}' .
'\x{0F6D}-\x{0F70}' .
'\x{0F98}' .
'\x{0FBD}' .
'\x{0FCD}' .
'\x{0FDB}-\x{0FFF}' .
'\x{10C6}' .
'\x{10C8}-\x{10CC}' .
'\x{10CE}-\x{10CF}' .
'\x{1249}' .
'\x{124E}-\x{124F}' .
'\x{1257}' .
'\x{1259}' .
'\x{125E}-\x{125F}' .
'\x{1289}' .
'\x{128E}-\x{128F}' .
'\x{12B1}' .
'\x{12B6}-\x{12B7}' .
'\x{12BF}' .
'\x{12C1}' .
'\x{12C6}-\x{12C7}' .
'\x{12D7}' .
'\x{1311}' .
'\x{1316}-\x{1317}' .
'\x{135B}-\x{135C}' .
'\x{137D}-\x{137F}' .
'\x{139A}-\x{139F}' .
'\x{13F6}-\x{13F7}' .
'\x{13FE}-\x{13FF}' .
'\x{169D}-\x{169F}' .
'\x{16F9}-\x{16FF}' .
'\x{1716}-\x{171E}' .
'\x{1737}-\x{173F}' .
'\x{1754}-\x{175F}' .
'\x{176D}' .
'\x{1771}' .
'\x{1774}-\x{177F}' .
'\x{17DE}-\x{17DF}' .
'\x{17EA}-\x{17EF}' .
'\x{17FA}-\x{17FF}' .
'\x{181A}-\x{181F}' .
'\x{1879}-\x{187F}' .
'\x{18AB}-\x{18AF}' .
'\x{18F6}-\x{18FF}' .
'\x{191F}' .
'\x{192C}-\x{192F}' .
'\x{193C}-\x{193F}' .
'\x{1941}-\x{1943}' .
'\x{196E}-\x{196F}' .
'\x{1975}-\x{197F}' .
'\x{19AC}-\x{19AF}' .
'\x{19CA}-\x{19CF}' .
'\x{19DB}-\x{19DD}' .
'\x{1A1C}-\x{1A1D}' .
'\x{1A5F}' .
'\x{1A7D}-\x{1A7E}' .
'\x{1A8A}-\x{1A8F}' .
'\x{1A9A}-\x{1A9F}' .
'\x{1AAE}-\x{1AAF}' .
'\x{1ACF}-\x{1AFF}' .
'\x{1B4D}-\x{1B4F}' .
'\x{1B7F}' .
'\x{1BF4}-\x{1BFB}' .
'\x{1C38}-\x{1C3A}' .
'\x{1C4A}-\x{1C4C}' .
'\x{1C89}-\x{1C8F}' .
'\x{1CBB}-\x{1CBC}' .
'\x{1CC8}-\x{1CCF}' .
'\x{1CFB}-\x{1CFF}' .
'\x{1F16}-\x{1F17}' .
'\x{1F1E}-\x{1F1F}' .
'\x{1F46}-\x{1F47}' .
'\x{1F4E}-\x{1F4F}' .
'\x{1F58}' .
'\x{1F5A}' .
'\x{1F5C}' .
'\x{1F5E}' .
'\x{1F7E}-\x{1F7F}' .
'\x{1FB5}' .
'\x{1FC5}' .
'\x{1FD4}-\x{1FD5}' .
'\x{1FDC}' .
'\x{1FF0}-\x{1FF1}' .
'\x{1FF5}' .
'\x{1FFF}' .
'\x{2065}' .
'\x{2072}-\x{2073}' .
'\x{208F}' .
'\x{209D}-\x{209F}' .
'\x{20C1}-\x{20CF}' .
'\x{20F1}-\x{20FF}' .
'\x{218C}-\x{218F}' .
'\x{2427}-\x{243F}' .
'\x{244B}-\x{245F}' .
'\x{2B74}-\x{2B75}' .
'\x{2B96}' .
'\x{2CF4}-\x{2CF8}' .
'\x{2D26}' .
'\x{2D28}-\x{2D2C}' .
'\x{2D2E}-\x{2D2F}' .
'\x{2D68}-\x{2D6E}' .
'\x{2D71}-\x{2D7E}' .
'\x{2D97}-\x{2D9F}' .
'\x{2DA7}' .
'\x{2DAF}' .
'\x{2DB7}' .
'\x{2DBF}' .
'\x{2DC7}' .
'\x{2DCF}' .
'\x{2DD7}' .
'\x{2DDF}' .
'\x{2E5E}-\x{2E7F}' .
'\x{2E9A}' .
'\x{2EF4}-\x{2EFF}' .
'\x{2FD6}-\x{2FEF}' .
'\x{2FFC}-\x{2FFF}' .
'\x{3040}' .
'\x{3097}-\x{3098}' .
'\x{3100}-\x{3104}' .
'\x{3130}' .
'\x{318F}' .
'\x{31E4}-\x{31EF}' .
'\x{321F}' .
'\x{A48D}-\x{A48F}' .
'\x{A4C7}-\x{A4CF}' .
'\x{A62C}-\x{A63F}' .
'\x{A6F8}-\x{A6FF}' .
'\x{A7CB}-\x{A7CF}' .
'\x{A7D2}' .
'\x{A7D4}' .
'\x{A7DA}-\x{A7F1}' .
'\x{A82D}-\x{A82F}' .
'\x{A83A}-\x{A83F}' .
'\x{A878}-\x{A87F}' .
'\x{A8C6}-\x{A8CD}' .
'\x{A8DA}-\x{A8DF}' .
'\x{A954}-\x{A95E}' .
'\x{A97D}-\x{A97F}' .
'\x{A9CE}' .
'\x{A9DA}-\x{A9DD}' .
'\x{A9FF}' .
'\x{AA37}-\x{AA3F}' .
'\x{AA4E}-\x{AA4F}' .
'\x{AA5A}-\x{AA5B}' .
'\x{AAC3}-\x{AADA}' .
'\x{AAF7}-\x{AB00}' .
'\x{AB07}-\x{AB08}' .
'\x{AB0F}-\x{AB10}' .
'\x{AB17}-\x{AB1F}' .
'\x{AB27}' .
'\x{AB2F}' .
'\x{AB6C}-\x{AB6F}' .
'\x{ABEE}-\x{ABEF}' .
'\x{ABFA}-\x{ABFF}' .
'\x{D7A4}-\x{D7AF}' .
'\x{D7C7}-\x{D7CA}' .
'\x{D7FC}-\x{D7FF}' .
'\x{FA6E}-\x{FA6F}' .
'\x{FADA}-\x{FAFF}' .
'\x{FB07}-\x{FB12}' .
'\x{FB18}-\x{FB1C}' .
'\x{FB37}' .
'\x{FB3D}' .
'\x{FB3F}' .
'\x{FB42}' .
'\x{FB45}' .
'\x{FBC3}-\x{FBD2}' .
'\x{FD90}-\x{FD91}' .
'\x{FDC8}-\x{FDCE}' .
'\x{FDD0}-\x{FDEF}' .
'\x{FE1A}-\x{FE1F}' .
'\x{FE53}' .
'\x{FE67}' .
'\x{FE6C}-\x{FE6F}' .
'\x{FE75}' .
'\x{FEFD}-\x{FEFE}' .
'\x{FF00}' .
'\x{FFBF}-\x{FFC1}' .
'\x{FFC8}-\x{FFC9}' .
'\x{FFD0}-\x{FFD1}' .
'\x{FFD8}-\x{FFD9}' .
'\x{FFDD}-\x{FFDF}' .
'\x{FFE7}' .
'\x{FFEF}-\x{FFF8}' .
'\x{FFFE}-\x{FFFF}' .
'\x{1000C}' .
'\x{10027}' .
'\x{1003B}' .
'\x{1003E}' .
'\x{1004E}-\x{1004F}' .
'\x{1005E}-\x{1007F}' .
'\x{100FB}-\x{100FF}' .
'\x{10103}-\x{10106}' .
'\x{10134}-\x{10136}' .
'\x{1018F}' .
'\x{1019D}-\x{1019F}' .
'\x{101A1}-\x{101CF}' .
'\x{101FE}-\x{1027F}' .
'\x{1029D}-\x{1029F}' .
'\x{102D1}-\x{102DF}' .
'\x{102FC}-\x{102FF}' .
'\x{10324}-\x{1032C}' .
'\x{1034B}-\x{1034F}' .
'\x{1037B}-\x{1037F}' .
'\x{1039E}' .
'\x{103C4}-\x{103C7}' .
'\x{103D6}-\x{103FF}' .
'\x{1049E}-\x{1049F}' .
'\x{104AA}-\x{104AF}' .
'\x{104D4}-\x{104D7}' .
'\x{104FC}-\x{104FF}' .
'\x{10528}-\x{1052F}' .
'\x{10564}-\x{1056E}' .
'\x{1057B}' .
'\x{1058B}' .
'\x{10593}' .
'\x{10596}' .
'\x{105A2}' .
'\x{105B2}' .
'\x{105BA}' .
'\x{105BD}-\x{105FF}' .
'\x{10737}-\x{1073F}' .
'\x{10756}-\x{1075F}' .
'\x{10768}-\x{1077F}' .
'\x{10786}' .
'\x{107B1}' .
'\x{107BB}-\x{107FF}' .
'\x{10806}-\x{10807}' .
'\x{10809}' .
'\x{10836}' .
'\x{10839}-\x{1083B}' .
'\x{1083D}-\x{1083E}' .
'\x{10856}' .
'\x{1089F}-\x{108A6}' .
'\x{108B0}-\x{108DF}' .
'\x{108F3}' .
'\x{108F6}-\x{108FA}' .
'\x{1091C}-\x{1091E}' .
'\x{1093A}-\x{1093E}' .
'\x{10940}-\x{1097F}' .
'\x{109B8}-\x{109BB}' .
'\x{109D0}-\x{109D1}' .
'\x{10A04}' .
'\x{10A07}-\x{10A0B}' .
'\x{10A14}' .
'\x{10A18}' .
'\x{10A36}-\x{10A37}' .
'\x{10A3B}-\x{10A3E}' .
'\x{10A49}-\x{10A4F}' .
'\x{10A59}-\x{10A5F}' .
'\x{10AA0}-\x{10ABF}' .
'\x{10AE7}-\x{10AEA}' .
'\x{10AF7}-\x{10AFF}' .
'\x{10B36}-\x{10B38}' .
'\x{10B56}-\x{10B57}' .
'\x{10B73}-\x{10B77}' .
'\x{10B92}-\x{10B98}' .
'\x{10B9D}-\x{10BA8}' .
'\x{10BB0}-\x{10BFF}' .
'\x{10C49}-\x{10C7F}' .
'\x{10CB3}-\x{10CBF}' .
'\x{10CF3}-\x{10CF9}' .
'\x{10D28}-\x{10D2F}' .
'\x{10D3A}-\x{10E5F}' .
'\x{10E7F}' .
'\x{10EAA}' .
'\x{10EAE}-\x{10EAF}' .
'\x{10EB2}-\x{10EFC}' .
'\x{10F28}-\x{10F2F}' .
'\x{10F5A}-\x{10F6F}' .
'\x{10F8A}-\x{10FAF}' .
'\x{10FCC}-\x{10FDF}' .
'\x{10FF7}-\x{10FFF}' .
'\x{1104E}-\x{11051}' .
'\x{11076}-\x{1107E}' .
'\x{110C3}-\x{110CC}' .
'\x{110CE}-\x{110CF}' .
'\x{110E9}-\x{110EF}' .
'\x{110FA}-\x{110FF}' .
'\x{11135}' .
'\x{11148}-\x{1114F}' .
'\x{11177}-\x{1117F}' .
'\x{111E0}' .
'\x{111F5}-\x{111FF}' .
'\x{11212}' .
'\x{11242}-\x{1127F}' .
'\x{11287}' .
'\x{11289}' .
'\x{1128E}' .
'\x{1129E}' .
'\x{112AA}-\x{112AF}' .
'\x{112EB}-\x{112EF}' .
'\x{112FA}-\x{112FF}' .
'\x{11304}' .
'\x{1130D}-\x{1130E}' .
'\x{11311}-\x{11312}' .
'\x{11329}' .
'\x{11331}' .
'\x{11334}' .
'\x{1133A}' .
'\x{11345}-\x{11346}' .
'\x{11349}-\x{1134A}' .
'\x{1134E}-\x{1134F}' .
'\x{11351}-\x{11356}' .
'\x{11358}-\x{1135C}' .
'\x{11364}-\x{11365}' .
'\x{1136D}-\x{1136F}' .
'\x{11375}-\x{113FF}' .
'\x{1145C}' .
'\x{11462}-\x{1147F}' .
'\x{114C8}-\x{114CF}' .
'\x{114DA}-\x{1157F}' .
'\x{115B6}-\x{115B7}' .
'\x{115DE}-\x{115FF}' .
'\x{11645}-\x{1164F}' .
'\x{1165A}-\x{1165F}' .
'\x{1166D}-\x{1167F}' .
'\x{116BA}-\x{116BF}' .
'\x{116CA}-\x{116FF}' .
'\x{1171B}-\x{1171C}' .
'\x{1172C}-\x{1172F}' .
'\x{11747}-\x{117FF}' .
'\x{1183C}-\x{1189F}' .
'\x{118F3}-\x{118FE}' .
'\x{11907}-\x{11908}' .
'\x{1190A}-\x{1190B}' .
'\x{11914}' .
'\x{11917}' .
'\x{11936}' .
'\x{11939}-\x{1193A}' .
'\x{11947}-\x{1194F}' .
'\x{1195A}-\x{1199F}' .
'\x{119A8}-\x{119A9}' .
'\x{119D8}-\x{119D9}' .
'\x{119E5}-\x{119FF}' .
'\x{11A48}-\x{11A4F}' .
'\x{11AA3}-\x{11AAF}' .
'\x{11AF9}-\x{11AFF}' .
'\x{11B0A}-\x{11BFF}' .
'\x{11C09}' .
'\x{11C37}' .
'\x{11C46}-\x{11C4F}' .
'\x{11C6D}-\x{11C6F}' .
'\x{11C90}-\x{11C91}' .
'\x{11CA8}' .
'\x{11CB7}-\x{11CFF}' .
'\x{11D07}' .
'\x{11D0A}' .
'\x{11D37}-\x{11D39}' .
'\x{11D3B}' .
'\x{11D3E}' .
'\x{11D48}-\x{11D4F}' .
'\x{11D5A}-\x{11D5F}' .
'\x{11D66}' .
'\x{11D69}' .
'\x{11D8F}' .
'\x{11D92}' .
'\x{11D99}-\x{11D9F}' .
'\x{11DAA}-\x{11EDF}' .
'\x{11EF9}-\x{11EFF}' .
'\x{11F11}' .
'\x{11F3B}-\x{11F3D}' .
'\x{11F5A}-\x{11FAF}' .
'\x{11FB1}-\x{11FBF}' .
'\x{11FF2}-\x{11FFE}' .
'\x{1239A}-\x{123FF}' .
'\x{1246F}' .
'\x{12475}-\x{1247F}' .
'\x{12544}-\x{12F8F}' .
'\x{12FF3}-\x{12FFF}' .
'\x{13456}-\x{143FF}' .
'\x{14647}-\x{167FF}' .
'\x{16A39}-\x{16A3F}' .
'\x{16A5F}' .
'\x{16A6A}-\x{16A6D}' .
'\x{16ABF}' .
'\x{16ACA}-\x{16ACF}' .
'\x{16AEE}-\x{16AEF}' .
'\x{16AF6}-\x{16AFF}' .
'\x{16B46}-\x{16B4F}' .
'\x{16B5A}' .
'\x{16B62}' .
'\x{16B78}-\x{16B7C}' .
'\x{16B90}-\x{16E3F}' .
'\x{16E9B}-\x{16EFF}' .
'\x{16F4B}-\x{16F4E}' .
'\x{16F88}-\x{16F8E}' .
'\x{16FA0}-\x{16FDF}' .
'\x{16FE5}-\x{16FEF}' .
'\x{16FF2}-\x{16FFF}' .
'\x{187F8}-\x{187FF}' .
'\x{18CD6}-\x{18CFF}' .
'\x{18D09}-\x{1AFEF}' .
'\x{1AFF4}' .
'\x{1AFFC}' .
'\x{1AFFF}' .
'\x{1B123}-\x{1B131}' .
'\x{1B133}-\x{1B14F}' .
'\x{1B153}-\x{1B154}' .
'\x{1B156}-\x{1B163}' .
'\x{1B168}-\x{1B16F}' .
'\x{1B2FC}-\x{1BBFF}' .
'\x{1BC6B}-\x{1BC6F}' .
'\x{1BC7D}-\x{1BC7F}' .
'\x{1BC89}-\x{1BC8F}' .
'\x{1BC9A}-\x{1BC9B}' .
'\x{1BCA4}-\x{1CEFF}' .
'\x{1CF2E}-\x{1CF2F}' .
'\x{1CF47}-\x{1CF4F}' .
'\x{1CFC4}-\x{1CFFF}' .
'\x{1D0F6}-\x{1D0FF}' .
'\x{1D127}-\x{1D128}' .
'\x{1D1EB}-\x{1D1FF}' .
'\x{1D246}-\x{1D2BF}' .
'\x{1D2D4}-\x{1D2DF}' .
'\x{1D2F4}-\x{1D2FF}' .
'\x{1D357}-\x{1D35F}' .
'\x{1D379}-\x{1D3FF}' .
'\x{1D455}' .
'\x{1D49D}' .
'\x{1D4A0}-\x{1D4A1}' .
'\x{1D4A3}-\x{1D4A4}' .
'\x{1D4A7}-\x{1D4A8}' .
'\x{1D4AD}' .
'\x{1D4BA}' .
'\x{1D4BC}' .
'\x{1D4C4}' .
'\x{1D506}' .
'\x{1D50B}-\x{1D50C}' .
'\x{1D515}' .
'\x{1D51D}' .
'\x{1D53A}' .
'\x{1D53F}' .
'\x{1D545}' .
'\x{1D547}-\x{1D549}' .
'\x{1D551}' .
'\x{1D6A6}-\x{1D6A7}' .
'\x{1D7CC}-\x{1D7CD}' .
'\x{1DA8C}-\x{1DA9A}' .
'\x{1DAA0}' .
'\x{1DAB0}-\x{1DEFF}' .
'\x{1DF1F}-\x{1DF24}' .
'\x{1DF2B}-\x{1DFFF}' .
'\x{1E007}' .
'\x{1E019}-\x{1E01A}' .
'\x{1E022}' .
'\x{1E025}' .
'\x{1E02B}-\x{1E02F}' .
'\x{1E06E}-\x{1E08E}' .
'\x{1E090}-\x{1E0FF}' .
'\x{1E12D}-\x{1E12F}' .
'\x{1E13E}-\x{1E13F}' .
'\x{1E14A}-\x{1E14D}' .
'\x{1E150}-\x{1E28F}' .
'\x{1E2AF}-\x{1E2BF}' .
'\x{1E2FA}-\x{1E2FE}' .
'\x{1E300}-\x{1E4CF}' .
'\x{1E4FA}-\x{1E7DF}' .
'\x{1E7E7}' .
'\x{1E7EC}' .
'\x{1E7EF}' .
'\x{1E7FF}' .
'\x{1E8C5}-\x{1E8C6}' .
'\x{1E8D7}-\x{1E8FF}' .
'\x{1E94C}-\x{1E94F}' .
'\x{1E95A}-\x{1E95D}' .
'\x{1E960}-\x{1EC70}' .
'\x{1ECB5}-\x{1ED00}' .
'\x{1ED3E}-\x{1EDFF}' .
'\x{1EE04}' .
'\x{1EE20}' .
'\x{1EE23}' .
'\x{1EE25}-\x{1EE26}' .
'\x{1EE28}' .
'\x{1EE33}' .
'\x{1EE38}' .
'\x{1EE3A}' .
'\x{1EE3C}-\x{1EE41}' .
'\x{1EE43}-\x{1EE46}' .
'\x{1EE48}' .
'\x{1EE4A}' .
'\x{1EE4C}' .
'\x{1EE50}' .
'\x{1EE53}' .
'\x{1EE55}-\x{1EE56}' .
'\x{1EE58}' .
'\x{1EE5A}' .
'\x{1EE5C}' .
'\x{1EE5E}' .
'\x{1EE60}' .
'\x{1EE63}' .
'\x{1EE65}-\x{1EE66}' .
'\x{1EE6B}' .
'\x{1EE73}' .
'\x{1EE78}' .
'\x{1EE7D}' .
'\x{1EE7F}' .
'\x{1EE8A}' .
'\x{1EE9C}-\x{1EEA0}' .
'\x{1EEA4}' .
'\x{1EEAA}' .
'\x{1EEBC}-\x{1EEEF}' .
'\x{1EEF2}-\x{1EFFF}' .
'\x{1F02C}-\x{1F02F}' .
'\x{1F094}-\x{1F09F}' .
'\x{1F0AF}-\x{1F0B0}' .
'\x{1F0C0}' .
'\x{1F0D0}' .
'\x{1F0F6}-\x{1F0FF}' .
'\x{1F1AE}-\x{1F1E5}' .
'\x{1F203}-\x{1F20F}' .
'\x{1F23C}-\x{1F23F}' .
'\x{1F249}-\x{1F24F}' .
'\x{1F252}-\x{1F25F}' .
'\x{1F266}-\x{1F2FF}' .
'\x{1F6D8}-\x{1F6DB}' .
'\x{1F6ED}-\x{1F6EF}' .
'\x{1F6FD}-\x{1F6FF}' .
'\x{1F777}-\x{1F77A}' .
'\x{1F7DA}-\x{1F7DF}' .
'\x{1F7EC}-\x{1F7EF}' .
'\x{1F7F1}-\x{1F7FF}' .
'\x{1F80C}-\x{1F80F}' .
'\x{1F848}-\x{1F84F}' .
'\x{1F85A}-\x{1F85F}' .
'\x{1F888}-\x{1F88F}' .
'\x{1F8AE}-\x{1F8AF}' .
'\x{1F8B2}-\x{1F8FF}' .
'\x{1FA54}-\x{1FA5F}' .
'\x{1FA6E}-\x{1FA6F}' .
'\x{1FA7D}-\x{1FA7F}' .
'\x{1FA89}-\x{1FA8F}' .
'\x{1FABE}' .
'\x{1FAC6}-\x{1FACD}' .
'\x{1FADC}-\x{1FADF}' .
'\x{1FAE9}-\x{1FAEF}' .
'\x{1FAF9}-\x{1FAFF}' .
'\x{1FB93}' .
'\x{1FBCB}-\x{1FBEF}' .
'\x{1FBFA}-\x{1FFFF}' .
'\x{2A6E0}-\x{2A6FF}' .
'\x{2B73A}-\x{2B73F}' .
'\x{2B81E}-\x{2B81F}' .
'\x{2CEA2}-\x{2CEAF}' .
'\x{2EBE1}-\x{2F7FF}' .
'\x{2FA1E}-\x{2FFFF}' .
'\x{3134B}-\x{3134F}' .
'\x{323B0}-\x{E0000}' .
'\x{E0002}-\x{E001F}' .
'\x{E0080}-\x{E00FF}' .
'\x{E01F0}-\x{EFFFF}' .
'\x{FFFFE}-\x{FFFFF}' .
'\x{10FFFE}-\x{10FFFF}',
Find: Select
'Default_Ignorable_Code_Point' => '\x{00AD}\x{034F}\x{061C}\x{115F}-\x{1160}\x{17B4}-\x{17B5}\x{180B}-\x{180D}\x{180E}\x{180F}\x{200B}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{2065}\x{2066}-\x{206F}\x{3164}\x{FE00}-\x{FE0F}\x{FEFF}\x{FFA0}\x{FFF0}-\x{FFF8}\x{1BCA0}-\x{1BCA3}\x{1D173}-\x{1D17A}\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}',
'Emoji' => '\x{0023}\x{002A}\x{0030}-\x{0039}\x{00A9}\x{00AE}\x{203C}\x{2049}\x{2122}\x{2139}\x{2194}-\x{2199}\x{21A9}-\x{21AA}\x{231A}-\x{231B}\x{2328}\x{23CF}\x{23E9}-\x{23EC}\x{23ED}-\x{23EE}\x{23EF}\x{23F0}\x{23F1}-\x{23F2}\x{23F3}\x{23F8}-\x{23FA}\x{24C2}\x{25AA}-\x{25AB}\x{25B6}\x{25C0}\x{25FB}-\x{25FE}\x{2600}-\x{2601}\x{2602}-\x{2603}\x{2604}\x{260E}\x{2611}\x{2614}-\x{2615}\x{2618}\x{261D}\x{2620}\x{2622}-\x{2623}\x{2626}\x{262A}\x{262E}\x{262F}\x{2638}-\x{2639}\x{263A}\x{2640}\x{2642}\x{2648}-\x{2653}\x{265F}\x{2660}\x{2663}\x{2665}-\x{2666}\x{2668}\x{267B}\x{267E}\x{267F}\x{2692}\x{2693}\x{2694}\x{2695}\x{2696}-\x{2697}\x{2699}\x{269B}-\x{269C}\x{26A0}-\x{26A1}\x{26A7}\x{26AA}-\x{26AB}\x{26B0}-\x{26B1}\x{26BD}-\x{26BE}\x{26C4}-\x{26C5}\x{26C8}\x{26CE}\x{26CF}\x{26D1}\x{26D3}\x{26D4}\x{26E9}\x{26EA}\x{26F0}-\x{26F1}\x{26F2}-\x{26F3}\x{26F4}\x{26F5}\x{26F7}-\x{26F9}\x{26FA}\x{26FD}\x{2702}\x{2705}\x{2708}-\x{270C}\x{270D}\x{270F}\x{2712}\x{2714}\x{2716}\x{271D}\x{2721}\x{2728}\x{2733}-\x{2734}\x{2744}\x{2747}\x{274C}\x{274E}\x{2753}-\x{2755}\x{2757}\x{2763}\x{2764}\x{2795}-\x{2797}\x{27A1}\x{27B0}\x{27BF}\x{2934}-\x{2935}\x{2B05}-\x{2B07}\x{2B1B}-\x{2B1C}\x{2B50}\x{2B55}\x{3030}\x{303D}\x{3297}\x{3299}\x{1F004}\x{1F0CF}\x{1F170}-\x{1F171}\x{1F17E}-\x{1F17F}\x{1F18E}\x{1F191}-\x{1F19A}\x{1F1E6}-\x{1F1FF}\x{1F201}-\x{1F202}\x{1F21A}\x{1F22F}\x{1F232}-\x{1F23A}\x{1F250}-\x{1F251}\x{1F300}-\x{1F30C}\x{1F30D}-\x{1F30E}\x{1F30F}\x{1F310}\x{1F311}\x{1F312}\x{1F313}-\x{1F315}\x{1F316}-\x{1F318}\x{1F319}\x{1F31A}\x{1F31B}\x{1F31C}\x{1F31D}-\x{1F31E}\x{1F31F}-\x{1F320}\x{1F321}\x{1F324}-\x{1F32C}\x{1F32D}-\x{1F32F}\x{1F330}-\x{1F331}\x{1F332}-\x{1F333}\x{1F334}-\x{1F335}\x{1F336}\x{1F337}-\x{1F34A}\x{1F34B}\x{1F34C}-\x{1F34F}\x{1F350}\x{1F351}-\x{1F37B}\x{1F37C}\x{1F37D}\x{1F37E}-\x{1F37F}\x{1F380}-\x{1F393}\x{1F396}-\x{1F397}\x{1F399}-\x{1F39B}\x{1F39E}-\x{1F39F}\x{1F3A0}-\x{1F3C4}\x{1F3C5}\x{1F3C6}\x{1F3C7}\x{1F3C8}\x{1F3C9}\x{1F3CA}\x{1F3CB}-\x{1F3CE}\x{1F3CF}-\x{1F3D3}\x{1F3D4}-\x{1F3DF}\x{1F3E0}-\x{1F3E3}\x{1F3E4}\x{1F3E5}-\x{1F3F0}\x{1F3F3}\x{1F3F4}\x{1F3F5}\x{1F3F7}\x{1F3F8}-\x{1F407}\x{1F408}\x{1F409}-\x{1F40B}\x{1F40C}-\x{1F40E}\x{1F40F}-\x{1F410}\x{1F411}-\x{1F412}\x{1F413}\x{1F414}\x{1F415}\x{1F416}\x{1F417}-\x{1F429}\x{1F42A}\x{1F42B}-\x{1F43E}\x{1F43F}\x{1F440}\x{1F441}\x{1F442}-\x{1F464}\x{1F465}\x{1F466}-\x{1F46B}\x{1F46C}-\x{1F46D}\x{1F46E}-\x{1F4AC}\x{1F4AD}\x{1F4AE}-\x{1F4B5}\x{1F4B6}-\x{1F4B7}\x{1F4B8}-\x{1F4EB}\x{1F4EC}-\x{1F4ED}\x{1F4EE}\x{1F4EF}\x{1F4F0}-\x{1F4F4}\x{1F4F5}\x{1F4F6}-\x{1F4F7}\x{1F4F8}\x{1F4F9}-\x{1F4FC}\x{1F4FD}\x{1F4FF}-\x{1F502}\x{1F503}\x{1F504}-\x{1F507}\x{1F508}\x{1F509}\x{1F50A}-\x{1F514}\x{1F515}\x{1F516}-\x{1F52B}\x{1F52C}-\x{1F52D}\x{1F52E}-\x{1F53D}\x{1F549}-\x{1F54A}\x{1F54B}-\x{1F54E}\x{1F550}-\x{1F55B}\x{1F55C}-\x{1F567}\x{1F56F}-\x{1F570}\x{1F573}-\x{1F579}\x{1F57A}\x{1F587}\x{1F58A}-\x{1F58D}\x{1F590}\x{1F595}-\x{1F596}\x{1F5A4}\x{1F5A5}\x{1F5A8}\x{1F5B1}-\x{1F5B2}\x{1F5BC}\x{1F5C2}-\x{1F5C4}\x{1F5D1}-\x{1F5D3}\x{1F5DC}-\x{1F5DE}\x{1F5E1}\x{1F5E3}\x{1F5E8}\x{1F5EF}\x{1F5F3}\x{1F5FA}\x{1F5FB}-\x{1F5FF}\x{1F600}\x{1F601}-\x{1F606}\x{1F607}-\x{1F608}\x{1F609}-\x{1F60D}\x{1F60E}\x{1F60F}\x{1F610}\x{1F611}\x{1F612}-\x{1F614}\x{1F615}\x{1F616}\x{1F617}\x{1F618}\x{1F619}\x{1F61A}\x{1F61B}\x{1F61C}-\x{1F61E}\x{1F61F}\x{1F620}-\x{1F625}\x{1F626}-\x{1F627}\x{1F628}-\x{1F62B}\x{1F62C}\x{1F62D}\x{1F62E}-\x{1F62F}\x{1F630}-\x{1F633}\x{1F634}\x{1F635}\x{1F636}\x{1F637}-\x{1F640}\x{1F641}-\x{1F644}\x{1F645}-\x{1F64F}\x{1F680}\x{1F681}-\x{1F682}\x{1F683}-\x{1F685}\x{1F686}\x{1F687}\x{1F688}\x{1F689}\x{1F68A}-\x{1F68B}\x{1F68C}\x{1F68D}\x{1F68E}\x{1F68F}\x{1F690}\x{1F691}-\x{1F693}\x{1F694}\x{1F695}\x{1F696}\x{1F697}\x{1F698}\x{1F699}-\x{1F69A}\x{1F69B}-\x{1F6A1}\x{1F6A2}\x{1F6A3}\x{1F6A4}-\x{1F6A5}\x{1F6A6}\x{1F6A7}-\x{1F6AD}\x{1F6AE}-\x{1F6B1}\x{1F6B2}\x{1F6B3}-\x{1F6B5}\x{1F6B6}\x{1F6B7}-\x{1F6B8}\x{1F6B9}-\x{1F6BE}\x{1F6BF}\x{1F6C0}\x{1F6C1}-\x{1F6C5}\x{1F6CB}\x{1F6CC}\x{1F6CD}-\x{1F6CF}\x{1F6D0}\x{1F6D1}-\x{1F6D2}\x{1F6D5}\x{1F6D6}-\x{1F6D7}\x{1F6DD}-\x{1F6DF}\x{1F6E0}-\x{1F6E5}\x{1F6E9}\x{1F6EB}-\x{1F6EC}\x{1F6F0}\x{1F6F3}\x{1F6F4}-\x{1F6F6}\x{1F6F7}-\x{1F6F8}\x{1F6F9}\x{1F6FA}\x{1F6FB}-\x{1F6FC}\x{1F7E0}-\x{1F7EB}\x{1F7F0}\x{1F90C}\x{1F90D}-\x{1F90F}\x{1F910}-\x{1F918}\x{1F919}-\x{1F91E}\x{1F91F}\x{1F920}-\x{1F927}\x{1F928}-\x{1F92F}\x{1F930}\x{1F931}-\x{1F932}\x{1F933}-\x{1F93A}\x{1F93C}-\x{1F93E}\x{1F93F}\x{1F940}-\x{1F945}\x{1F947}-\x{1F94B}\x{1F94C}\x{1F94D}-\x{1F94F}\x{1F950}-\x{1F95E}\x{1F95F}-\x{1F96B}\x{1F96C}-\x{1F970}\x{1F971}\x{1F972}\x{1F973}-\x{1F976}\x{1F977}-\x{1F978}\x{1F979}\x{1F97A}\x{1F97B}\x{1F97C}-\x{1F97F}\x{1F980}-\x{1F984}\x{1F985}-\x{1F991}\x{1F992}-\x{1F997}\x{1F998}-\x{1F9A2}\x{1F9A3}-\x{1F9A4}\x{1F9A5}-\x{1F9AA}\x{1F9AB}-\x{1F9AD}\x{1F9AE}-\x{1F9AF}\x{1F9B0}-\x{1F9B9}\x{1F9BA}-\x{1F9BF}\x{1F9C0}\x{1F9C1}-\x{1F9C2}\x{1F9C3}-\x{1F9CA}\x{1F9CB}\x{1F9CC}\x{1F9CD}-\x{1F9CF}\x{1F9D0}-\x{1F9E6}\x{1F9E7}-\x{1F9FF}\x{1FA70}-\x{1FA73}\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA7B}-\x{1FA7C}\x{1FA80}-\x{1FA82}\x{1FA83}-\x{1FA86}\x{1FA90}-\x{1FA95}\x{1FA96}-\x{1FAA8}\x{1FAA9}-\x{1FAAC}\x{1FAB0}-\x{1FAB6}\x{1FAB7}-\x{1FABA}\x{1FAC0}-\x{1FAC2}\x{1FAC3}-\x{1FAC5}\x{1FAD0}-\x{1FAD6}\x{1FAD7}-\x{1FAD9}\x{1FAE0}-\x{1FAE7}\x{1FAF0}-\x{1FAF6}',
'Emoji_Modifier' => '\x{1F3FB}-\x{1F3FF}',
'Ideographic' => '\x{3006}\x{3007}\x{3021}-\x{3029}\x{3038}-\x{303A}\x{3400}-\x{4DBF}\x{4E00}-\x{9FFF}\x{F900}-\x{FA6D}\x{FA70}-\x{FAD9}\x{16FE4}\x{17000}-\x{187F7}\x{18800}-\x{18CD5}\x{18D00}-\x{18D08}\x{1B170}-\x{1B2FB}\x{20000}-\x{2A6DF}\x{2A700}-\x{2B738}\x{2B740}-\x{2B81D}\x{2B820}-\x{2CEA1}\x{2CEB0}-\x{2EBE0}\x{2F800}-\x{2FA1D}\x{30000}-\x{3134A}',
'Join_Control' => '\x{200C}-\x{200D}',
'Regional_Indicator' => '\x{1F1E6}-\x{1F1FF}',
'Variation_Selector' => '\x{180B}-\x{180D}\x{180F}\x{FE00}-\x{FE0F}\x{E0100}-\x{E01EF}',
Replace With: Select
'Default_Ignorable_Code_Point' =>
'\x{00AD}' .
'\x{034F}' .
'\x{061C}' .
'\x{115F}-\x{1160}' .
'\x{17B4}-\x{17B5}' .
'\x{180B}-\x{180D}' .
'\x{180E}' .
'\x{180F}' .
'\x{200B}-\x{200F}' .
'\x{202A}-\x{202E}' .
'\x{2060}-\x{2064}' .
'\x{2065}' .
'\x{2066}-\x{206F}' .
'\x{3164}' .
'\x{FE00}-\x{FE0F}' .
'\x{FEFF}' .
'\x{FFA0}' .
'\x{FFF0}-\x{FFF8}' .
'\x{1BCA0}-\x{1BCA3}' .
'\x{1D173}-\x{1D17A}' .
'\x{E0000}' .
'\x{E0001}' .
'\x{E0002}-\x{E001F}' .
'\x{E0020}-\x{E007F}' .
'\x{E0080}-\x{E00FF}' .
'\x{E0100}-\x{E01EF}' .
'\x{E01F0}-\x{E0FFF}',
'Emoji' =>
'\x{0023}' .
'\x{002A}' .
'\x{0030}-\x{0039}' .
'\x{00A9}' .
'\x{00AE}' .
'\x{203C}' .
'\x{2049}' .
'\x{2122}' .
'\x{2139}' .
'\x{2194}-\x{2199}' .
'\x{21A9}-\x{21AA}' .
'\x{231A}-\x{231B}' .
'\x{2328}' .
'\x{23CF}' .
'\x{23E9}-\x{23EC}' .
'\x{23ED}-\x{23EE}' .
'\x{23EF}' .
'\x{23F0}' .
'\x{23F1}-\x{23F2}' .
'\x{23F3}' .
'\x{23F8}-\x{23FA}' .
'\x{24C2}' .
'\x{25AA}-\x{25AB}' .
'\x{25B6}' .
'\x{25C0}' .
'\x{25FB}-\x{25FE}' .
'\x{2600}-\x{2601}' .
'\x{2602}-\x{2603}' .
'\x{2604}' .
'\x{260E}' .
'\x{2611}' .
'\x{2614}-\x{2615}' .
'\x{2618}' .
'\x{261D}' .
'\x{2620}' .
'\x{2622}-\x{2623}' .
'\x{2626}' .
'\x{262A}' .
'\x{262E}' .
'\x{262F}' .
'\x{2638}-\x{2639}' .
'\x{263A}' .
'\x{2640}' .
'\x{2642}' .
'\x{2648}-\x{2653}' .
'\x{265F}' .
'\x{2660}' .
'\x{2663}' .
'\x{2665}-\x{2666}' .
'\x{2668}' .
'\x{267B}' .
'\x{267E}' .
'\x{267F}' .
'\x{2692}' .
'\x{2693}' .
'\x{2694}' .
'\x{2695}' .
'\x{2696}-\x{2697}' .
'\x{2699}' .
'\x{269B}-\x{269C}' .
'\x{26A0}-\x{26A1}' .
'\x{26A7}' .
'\x{26AA}-\x{26AB}' .
'\x{26B0}-\x{26B1}' .
'\x{26BD}-\x{26BE}' .
'\x{26C4}-\x{26C5}' .
'\x{26C8}' .
'\x{26CE}' .
'\x{26CF}' .
'\x{26D1}' .
'\x{26D3}' .
'\x{26D4}' .
'\x{26E9}' .
'\x{26EA}' .
'\x{26F0}-\x{26F1}' .
'\x{26F2}-\x{26F3}' .
'\x{26F4}' .
'\x{26F5}' .
'\x{26F7}-\x{26F9}' .
'\x{26FA}' .
'\x{26FD}' .
'\x{2702}' .
'\x{2705}' .
'\x{2708}-\x{270C}' .
'\x{270D}' .
'\x{270F}' .
'\x{2712}' .
'\x{2714}' .
'\x{2716}' .
'\x{271D}' .
'\x{2721}' .
'\x{2728}' .
'\x{2733}-\x{2734}' .
'\x{2744}' .
'\x{2747}' .
'\x{274C}' .
'\x{274E}' .
'\x{2753}-\x{2755}' .
'\x{2757}' .
'\x{2763}' .
'\x{2764}' .
'\x{2795}-\x{2797}' .
'\x{27A1}' .
'\x{27B0}' .
'\x{27BF}' .
'\x{2934}-\x{2935}' .
'\x{2B05}-\x{2B07}' .
'\x{2B1B}-\x{2B1C}' .
'\x{2B50}' .
'\x{2B55}' .
'\x{3030}' .
'\x{303D}' .
'\x{3297}' .
'\x{3299}' .
'\x{1F004}' .
'\x{1F0CF}' .
'\x{1F170}-\x{1F171}' .
'\x{1F17E}-\x{1F17F}' .
'\x{1F18E}' .
'\x{1F191}-\x{1F19A}' .
'\x{1F1E6}-\x{1F1FF}' .
'\x{1F201}-\x{1F202}' .
'\x{1F21A}' .
'\x{1F22F}' .
'\x{1F232}-\x{1F23A}' .
'\x{1F250}-\x{1F251}' .
'\x{1F300}-\x{1F30C}' .
'\x{1F30D}-\x{1F30E}' .
'\x{1F30F}' .
'\x{1F310}' .
'\x{1F311}' .
'\x{1F312}' .
'\x{1F313}-\x{1F315}' .
'\x{1F316}-\x{1F318}' .
'\x{1F319}' .
'\x{1F31A}' .
'\x{1F31B}' .
'\x{1F31C}' .
'\x{1F31D}-\x{1F31E}' .
'\x{1F31F}-\x{1F320}' .
'\x{1F321}' .
'\x{1F324}-\x{1F32C}' .
'\x{1F32D}-\x{1F32F}' .
'\x{1F330}-\x{1F331}' .
'\x{1F332}-\x{1F333}' .
'\x{1F334}-\x{1F335}' .
'\x{1F336}' .
'\x{1F337}-\x{1F34A}' .
'\x{1F34B}' .
'\x{1F34C}-\x{1F34F}' .
'\x{1F350}' .
'\x{1F351}-\x{1F37B}' .
'\x{1F37C}' .
'\x{1F37D}' .
'\x{1F37E}-\x{1F37F}' .
'\x{1F380}-\x{1F393}' .
'\x{1F396}-\x{1F397}' .
'\x{1F399}-\x{1F39B}' .
'\x{1F39E}-\x{1F39F}' .
'\x{1F3A0}-\x{1F3C4}' .
'\x{1F3C5}' .
'\x{1F3C6}' .
'\x{1F3C7}' .
'\x{1F3C8}' .
'\x{1F3C9}' .
'\x{1F3CA}' .
'\x{1F3CB}-\x{1F3CE}' .
'\x{1F3CF}-\x{1F3D3}' .
'\x{1F3D4}-\x{1F3DF}' .
'\x{1F3E0}-\x{1F3E3}' .
'\x{1F3E4}' .
'\x{1F3E5}-\x{1F3F0}' .
'\x{1F3F3}' .
'\x{1F3F4}' .
'\x{1F3F5}' .
'\x{1F3F7}' .
'\x{1F3F8}-\x{1F407}' .
'\x{1F408}' .
'\x{1F409}-\x{1F40B}' .
'\x{1F40C}-\x{1F40E}' .
'\x{1F40F}-\x{1F410}' .
'\x{1F411}-\x{1F412}' .
'\x{1F413}' .
'\x{1F414}' .
'\x{1F415}' .
'\x{1F416}' .
'\x{1F417}-\x{1F429}' .
'\x{1F42A}' .
'\x{1F42B}-\x{1F43E}' .
'\x{1F43F}' .
'\x{1F440}' .
'\x{1F441}' .
'\x{1F442}-\x{1F464}' .
'\x{1F465}' .
'\x{1F466}-\x{1F46B}' .
'\x{1F46C}-\x{1F46D}' .
'\x{1F46E}-\x{1F4AC}' .
'\x{1F4AD}' .
'\x{1F4AE}-\x{1F4B5}' .
'\x{1F4B6}-\x{1F4B7}' .
'\x{1F4B8}-\x{1F4EB}' .
'\x{1F4EC}-\x{1F4ED}' .
'\x{1F4EE}' .
'\x{1F4EF}' .
'\x{1F4F0}-\x{1F4F4}' .
'\x{1F4F5}' .
'\x{1F4F6}-\x{1F4F7}' .
'\x{1F4F8}' .
'\x{1F4F9}-\x{1F4FC}' .
'\x{1F4FD}' .
'\x{1F4FF}-\x{1F502}' .
'\x{1F503}' .
'\x{1F504}-\x{1F507}' .
'\x{1F508}' .
'\x{1F509}' .
'\x{1F50A}-\x{1F514}' .
'\x{1F515}' .
'\x{1F516}-\x{1F52B}' .
'\x{1F52C}-\x{1F52D}' .
'\x{1F52E}-\x{1F53D}' .
'\x{1F549}-\x{1F54A}' .
'\x{1F54B}-\x{1F54E}' .
'\x{1F550}-\x{1F55B}' .
'\x{1F55C}-\x{1F567}' .
'\x{1F56F}-\x{1F570}' .
'\x{1F573}-\x{1F579}' .
'\x{1F57A}' .
'\x{1F587}' .
'\x{1F58A}-\x{1F58D}' .
'\x{1F590}' .
'\x{1F595}-\x{1F596}' .
'\x{1F5A4}' .
'\x{1F5A5}' .
'\x{1F5A8}' .
'\x{1F5B1}-\x{1F5B2}' .
'\x{1F5BC}' .
'\x{1F5C2}-\x{1F5C4}' .
'\x{1F5D1}-\x{1F5D3}' .
'\x{1F5DC}-\x{1F5DE}' .
'\x{1F5E1}' .
'\x{1F5E3}' .
'\x{1F5E8}' .
'\x{1F5EF}' .
'\x{1F5F3}' .
'\x{1F5FA}' .
'\x{1F5FB}-\x{1F5FF}' .
'\x{1F600}' .
'\x{1F601}-\x{1F606}' .
'\x{1F607}-\x{1F608}' .
'\x{1F609}-\x{1F60D}' .
'\x{1F60E}' .
'\x{1F60F}' .
'\x{1F610}' .
'\x{1F611}' .
'\x{1F612}-\x{1F614}' .
'\x{1F615}' .
'\x{1F616}' .
'\x{1F617}' .
'\x{1F618}' .
'\x{1F619}' .
'\x{1F61A}' .
'\x{1F61B}' .
'\x{1F61C}-\x{1F61E}' .
'\x{1F61F}' .
'\x{1F620}-\x{1F625}' .
'\x{1F626}-\x{1F627}' .
'\x{1F628}-\x{1F62B}' .
'\x{1F62C}' .
'\x{1F62D}' .
'\x{1F62E}-\x{1F62F}' .
'\x{1F630}-\x{1F633}' .
'\x{1F634}' .
'\x{1F635}' .
'\x{1F636}' .
'\x{1F637}-\x{1F640}' .
'\x{1F641}-\x{1F644}' .
'\x{1F645}-\x{1F64F}' .
'\x{1F680}' .
'\x{1F681}-\x{1F682}' .
'\x{1F683}-\x{1F685}' .
'\x{1F686}' .
'\x{1F687}' .
'\x{1F688}' .
'\x{1F689}' .
'\x{1F68A}-\x{1F68B}' .
'\x{1F68C}' .
'\x{1F68D}' .
'\x{1F68E}' .
'\x{1F68F}' .
'\x{1F690}' .
'\x{1F691}-\x{1F693}' .
'\x{1F694}' .
'\x{1F695}' .
'\x{1F696}' .
'\x{1F697}' .
'\x{1F698}' .
'\x{1F699}-\x{1F69A}' .
'\x{1F69B}-\x{1F6A1}' .
'\x{1F6A2}' .
'\x{1F6A3}' .
'\x{1F6A4}-\x{1F6A5}' .
'\x{1F6A6}' .
'\x{1F6A7}-\x{1F6AD}' .
'\x{1F6AE}-\x{1F6B1}' .
'\x{1F6B2}' .
'\x{1F6B3}-\x{1F6B5}' .
'\x{1F6B6}' .
'\x{1F6B7}-\x{1F6B8}' .
'\x{1F6B9}-\x{1F6BE}' .
'\x{1F6BF}' .
'\x{1F6C0}' .
'\x{1F6C1}-\x{1F6C5}' .
'\x{1F6CB}' .
'\x{1F6CC}' .
'\x{1F6CD}-\x{1F6CF}' .
'\x{1F6D0}' .
'\x{1F6D1}-\x{1F6D2}' .
'\x{1F6D5}' .
'\x{1F6D6}-\x{1F6D7}' .
'\x{1F6DC}' .
'\x{1F6DD}-\x{1F6DF}' .
'\x{1F6E0}-\x{1F6E5}' .
'\x{1F6E9}' .
'\x{1F6EB}-\x{1F6EC}' .
'\x{1F6F0}' .
'\x{1F6F3}' .
'\x{1F6F4}-\x{1F6F6}' .
'\x{1F6F7}-\x{1F6F8}' .
'\x{1F6F9}' .
'\x{1F6FA}' .
'\x{1F6FB}-\x{1F6FC}' .
'\x{1F7E0}-\x{1F7EB}' .
'\x{1F7F0}' .
'\x{1F90C}' .
'\x{1F90D}-\x{1F90F}' .
'\x{1F910}-\x{1F918}' .
'\x{1F919}-\x{1F91E}' .
'\x{1F91F}' .
'\x{1F920}-\x{1F927}' .
'\x{1F928}-\x{1F92F}' .
'\x{1F930}' .
'\x{1F931}-\x{1F932}' .
'\x{1F933}-\x{1F93A}' .
'\x{1F93C}-\x{1F93E}' .
'\x{1F93F}' .
'\x{1F940}-\x{1F945}' .
'\x{1F947}-\x{1F94B}' .
'\x{1F94C}' .
'\x{1F94D}-\x{1F94F}' .
'\x{1F950}-\x{1F95E}' .
'\x{1F95F}-\x{1F96B}' .
'\x{1F96C}-\x{1F970}' .
'\x{1F971}' .
'\x{1F972}' .
'\x{1F973}-\x{1F976}' .
'\x{1F977}-\x{1F978}' .
'\x{1F979}' .
'\x{1F97A}' .
'\x{1F97B}' .
'\x{1F97C}-\x{1F97F}' .
'\x{1F980}-\x{1F984}' .
'\x{1F985}-\x{1F991}' .
'\x{1F992}-\x{1F997}' .
'\x{1F998}-\x{1F9A2}' .
'\x{1F9A3}-\x{1F9A4}' .
'\x{1F9A5}-\x{1F9AA}' .
'\x{1F9AB}-\x{1F9AD}' .
'\x{1F9AE}-\x{1F9AF}' .
'\x{1F9B0}-\x{1F9B9}' .
'\x{1F9BA}-\x{1F9BF}' .
'\x{1F9C0}' .
'\x{1F9C1}-\x{1F9C2}' .
'\x{1F9C3}-\x{1F9CA}' .
'\x{1F9CB}' .
'\x{1F9CC}' .
'\x{1F9CD}-\x{1F9CF}' .
'\x{1F9D0}-\x{1F9E6}' .
'\x{1F9E7}-\x{1F9FF}' .
'\x{1FA70}-\x{1FA73}' .
'\x{1FA74}' .
'\x{1FA75}-\x{1FA77}' .
'\x{1FA78}-\x{1FA7A}' .
'\x{1FA7B}-\x{1FA7C}' .
'\x{1FA80}-\x{1FA82}' .
'\x{1FA83}-\x{1FA86}' .
'\x{1FA87}-\x{1FA88}' .
'\x{1FA90}-\x{1FA95}' .
'\x{1FA96}-\x{1FAA8}' .
'\x{1FAA9}-\x{1FAAC}' .
'\x{1FAAD}-\x{1FAAF}' .
'\x{1FAB0}-\x{1FAB6}' .
'\x{1FAB7}-\x{1FABA}' .
'\x{1FABB}-\x{1FABD}' .
'\x{1FABF}' .
'\x{1FAC0}-\x{1FAC2}' .
'\x{1FAC3}-\x{1FAC5}' .
'\x{1FACE}-\x{1FACF}' .
'\x{1FAD0}-\x{1FAD6}' .
'\x{1FAD7}-\x{1FAD9}' .
'\x{1FADA}-\x{1FADB}' .
'\x{1FAE0}-\x{1FAE7}' .
'\x{1FAE8}' .
'\x{1FAF0}-\x{1FAF6}' .
'\x{1FAF7}-\x{1FAF8}',
'Emoji_Modifier' =>
'\x{1F3FB}-\x{1F3FF}',
'Ideographic' =>
'\x{3006}' .
'\x{3007}' .
'\x{3021}-\x{3029}' .
'\x{3038}-\x{303A}' .
'\x{3400}-\x{4DBF}' .
'\x{4E00}-\x{9FFF}' .
'\x{F900}-\x{FA6D}' .
'\x{FA70}-\x{FAD9}' .
'\x{16FE4}' .
'\x{17000}-\x{187F7}' .
'\x{18800}-\x{18CD5}' .
'\x{18D00}-\x{18D08}' .
'\x{1B170}-\x{1B2FB}' .
'\x{20000}-\x{2A6DF}' .
'\x{2A700}-\x{2B739}' .
'\x{2B740}-\x{2B81D}' .
'\x{2B820}-\x{2CEA1}' .
'\x{2CEB0}-\x{2EBE0}' .
'\x{2F800}-\x{2FA1D}' .
'\x{30000}-\x{3134A}' .
'\x{31350}-\x{323AF}',
'Join_Control' =>
'\x{200C}-\x{200D}',
'Regional_Indicator' =>
'\x{1F1E6}-\x{1F1FF}',
'Variation_Selector' =>
'\x{180B}-\x{180D}' .
'\x{180F}' .
'\x{FE00}-\x{FE0F}' .
'\x{E0100}-\x{E01EF}',
Find: Select
'\x{FE0E}\x{FE0F}' => '\x{0023}\x{002A}\x{0030}-\x{0039}\x{00A9}\x{00AE}\x{203C}\x{2049}\x{2122}\x{2139}\x{2194}-\x{2199}\x{21A9}-\x{21AA}\x{231A}-\x{231B}\x{2328}\x{23CF}\x{23E9}-\x{23EA}\x{23ED}-\x{23EF}\x{23F1}-\x{23F3}\x{23F8}-\x{23FA}\x{24C2}\x{25AA}-\x{25AB}\x{25B6}\x{25C0}\x{25FB}-\x{25FE}\x{2600}-\x{2604}\x{260E}\x{2611}\x{2614}-\x{2615}\x{2618}\x{261D}\x{2620}\x{2622}-\x{2623}\x{2626}\x{262A}\x{262E}-\x{262F}\x{2638}-\x{263A}\x{2640}\x{2642}\x{2648}-\x{2653}\x{265F}-\x{2660}\x{2663}\x{2665}-\x{2666}\x{2668}\x{267B}\x{267E}-\x{267F}\x{2692}-\x{2697}\x{2699}\x{269B}-\x{269C}\x{26A0}-\x{26A1}\x{26A7}\x{26AA}-\x{26AB}\x{26B0}-\x{26B1}\x{26BD}-\x{26BE}\x{26C4}-\x{26C5}\x{26C8}\x{26CF}\x{26D1}\x{26D3}-\x{26D4}\x{26E9}-\x{26EA}\x{26F0}-\x{26F5}\x{26F7}-\x{26FA}\x{26FD}\x{2702}\x{2708}-\x{2709}\x{270C}-\x{270D}\x{270F}\x{2712}\x{2714}\x{2716}\x{271D}\x{2721}\x{2733}-\x{2734}\x{2744}\x{2747}\x{2753}\x{2757}\x{2763}-\x{2764}\x{27A1}\x{2934}-\x{2935}\x{2B05}-\x{2B07}\x{2B1B}-\x{2B1C}\x{2B50}\x{2B55}\x{3030}\x{303D}\x{3297}\x{3299}\x{1F004}\x{1F170}-\x{1F171}\x{1F17E}-\x{1F17F}\x{1F202}\x{1F21A}\x{1F22F}\x{1F237}\x{1F30D}-\x{1F30F}\x{1F315}\x{1F31C}\x{1F321}\x{1F324}-\x{1F32C}\x{1F336}\x{1F378}\x{1F37D}\x{1F393}\x{1F396}-\x{1F397}\x{1F399}-\x{1F39B}\x{1F39E}-\x{1F39F}\x{1F3A7}\x{1F3AC}-\x{1F3AE}\x{1F3C2}\x{1F3C4}\x{1F3C6}\x{1F3CA}-\x{1F3CE}\x{1F3D4}-\x{1F3E0}\x{1F3ED}\x{1F3F3}\x{1F3F5}\x{1F3F7}\x{1F408}\x{1F415}\x{1F41F}\x{1F426}\x{1F43F}\x{1F441}-\x{1F442}\x{1F446}-\x{1F449}\x{1F44D}-\x{1F44E}\x{1F453}\x{1F46A}\x{1F47D}\x{1F4A3}\x{1F4B0}\x{1F4B3}\x{1F4BB}\x{1F4BF}\x{1F4CB}\x{1F4DA}\x{1F4DF}\x{1F4E4}-\x{1F4E6}\x{1F4EA}-\x{1F4ED}\x{1F4F7}\x{1F4F9}-\x{1F4FB}\x{1F4FD}\x{1F508}\x{1F50D}\x{1F512}-\x{1F513}\x{1F549}-\x{1F54A}\x{1F550}-\x{1F567}\x{1F56F}-\x{1F570}\x{1F573}-\x{1F579}\x{1F587}\x{1F58A}-\x{1F58D}\x{1F590}\x{1F5A5}\x{1F5A8}\x{1F5B1}-\x{1F5B2}\x{1F5BC}\x{1F5C2}-\x{1F5C4}\x{1F5D1}-\x{1F5D3}\x{1F5DC}-\x{1F5DE}\x{1F5E1}\x{1F5E3}\x{1F5E8}\x{1F5EF}\x{1F5F3}\x{1F5FA}\x{1F610}\x{1F687}\x{1F68D}\x{1F691}\x{1F694}\x{1F698}\x{1F6AD}\x{1F6B2}\x{1F6B9}-\x{1F6BA}\x{1F6BC}\x{1F6CB}\x{1F6CD}-\x{1F6CF}\x{1F6E0}-\x{1F6E5}\x{1F6E9}\x{1F6F0}\x{1F6F3}',
'\x{FE02}' => '\x{537F}\x{5BE7}\x{618E}\x{61F2}\x{6717}\x{6A02}\x{6BBA}\x{6D41}\x{7DF4}\x{8005}\x{980B}\x{9F9C}',
'\x{FE01}' => '\x{1D49C}\x{212C}\x{1D49E}-\x{1D49F}\x{2130}-\x{2131}\x{1D4A2}\x{210B}\x{2110}\x{1D4A5}-\x{1D4A6}\x{2112}\x{2133}\x{1D4A9}-\x{1D4AC}\x{211B}\x{1D4AE}-\x{1D4B5}\x{3001}-\x{3002}\x{FF01}\x{FF0C}\x{FF0E}\x{FF1A}-\x{FF1B}\x{FF1F}\x{3B9D}\x{3EB8}\x{4039}\x{4FAE}\x{50E7}\x{514D}\x{51B5}\x{5207}\x{52C7}\x{52C9}\x{52E4}\x{52FA}\x{5317}\x{5351}\x{537F}\x{5584}\x{5599}\x{559D}\x{5606}\x{585A}\x{5B3E}\x{5BE7}\x{5C6E}\x{5ECA}\x{5F22}\x{6094}\x{614C}\x{614E}\x{618E}\x{61F2}\x{61F6}\x{654F}\x{6674}\x{6691}\x{6717}\x{671B}\x{6885}\x{6A02}\x{6BBA}\x{6D41}\x{6D77}\x{6ECB}\x{6F22}\x{701E}\x{716E}\x{7235}\x{732A}\x{7387}\x{7471}\x{7570}\x{76CA}\x{76F4}\x{771F}\x{774A}\x{788C}\x{78CC}\x{7956}\x{798F}\x{7A40}\x{7BC0}\x{7DF4}\x{8005}\x{8201}\x{8279}\x{82E5}\x{8457}\x{865C}\x{8779}\x{8996}\x{8AAA}\x{8AED}\x{8AF8}\x{8AFE}\x{8B01}\x{8B39}\x{8B8A}\x{8D08}\x{8F38}\x{9038}\x{96E3}\x{9756}\x{97FF}\x{980B}\x{983B}\x{9B12}\x{9F9C}\x{22331}\x{25AA7}',
Replace With: Select
'\x{FE0E}\x{FE0F}' =>
'\x{0023}' .
'\x{002A}' .
'\x{0030}-\x{0039}' .
'\x{00A9}' .
'\x{00AE}' .
'\x{203C}' .
'\x{2049}' .
'\x{2122}' .
'\x{2139}' .
'\x{2194}-\x{2199}' .
'\x{21A9}-\x{21AA}' .
'\x{231A}-\x{231B}' .
'\x{2328}' .
'\x{23CF}' .
'\x{23E9}-\x{23EA}' .
'\x{23ED}-\x{23EF}' .
'\x{23F1}-\x{23F3}' .
'\x{23F8}-\x{23FA}' .
'\x{24C2}' .
'\x{25AA}-\x{25AB}' .
'\x{25B6}' .
'\x{25C0}' .
'\x{25FB}-\x{25FE}' .
'\x{2600}-\x{2604}' .
'\x{260E}' .
'\x{2611}' .
'\x{2614}-\x{2615}' .
'\x{2618}' .
'\x{261D}' .
'\x{2620}' .
'\x{2622}-\x{2623}' .
'\x{2626}' .
'\x{262A}' .
'\x{262E}-\x{262F}' .
'\x{2638}-\x{263A}' .
'\x{2640}' .
'\x{2642}' .
'\x{2648}-\x{2653}' .
'\x{265F}-\x{2660}' .
'\x{2663}' .
'\x{2665}-\x{2666}' .
'\x{2668}' .
'\x{267B}' .
'\x{267E}-\x{267F}' .
'\x{2692}-\x{2697}' .
'\x{2699}' .
'\x{269B}-\x{269C}' .
'\x{26A0}-\x{26A1}' .
'\x{26A7}' .
'\x{26AA}-\x{26AB}' .
'\x{26B0}-\x{26B1}' .
'\x{26BD}-\x{26BE}' .
'\x{26C4}-\x{26C5}' .
'\x{26C8}' .
'\x{26CF}' .
'\x{26D1}' .
'\x{26D3}-\x{26D4}' .
'\x{26E9}-\x{26EA}' .
'\x{26F0}-\x{26F5}' .
'\x{26F7}-\x{26FA}' .
'\x{26FD}' .
'\x{2702}' .
'\x{2708}-\x{2709}' .
'\x{270C}-\x{270D}' .
'\x{270F}' .
'\x{2712}' .
'\x{2714}' .
'\x{2716}' .
'\x{271D}' .
'\x{2721}' .
'\x{2733}-\x{2734}' .
'\x{2744}' .
'\x{2747}' .
'\x{2753}' .
'\x{2757}' .
'\x{2763}-\x{2764}' .
'\x{27A1}' .
'\x{2934}-\x{2935}' .
'\x{2B05}-\x{2B07}' .
'\x{2B1B}-\x{2B1C}' .
'\x{2B50}' .
'\x{2B55}' .
'\x{3030}' .
'\x{303D}' .
'\x{3297}' .
'\x{3299}' .
'\x{1F004}' .
'\x{1F170}-\x{1F171}' .
'\x{1F17E}-\x{1F17F}' .
'\x{1F202}' .
'\x{1F21A}' .
'\x{1F22F}' .
'\x{1F237}' .
'\x{1F30D}-\x{1F30F}' .
'\x{1F315}' .
'\x{1F31C}' .
'\x{1F321}' .
'\x{1F324}-\x{1F32C}' .
'\x{1F336}' .
'\x{1F378}' .
'\x{1F37D}' .
'\x{1F393}' .
'\x{1F396}-\x{1F397}' .
'\x{1F399}-\x{1F39B}' .
'\x{1F39E}-\x{1F39F}' .
'\x{1F3A7}' .
'\x{1F3AC}-\x{1F3AE}' .
'\x{1F3C2}' .
'\x{1F3C4}' .
'\x{1F3C6}' .
'\x{1F3CA}-\x{1F3CE}' .
'\x{1F3D4}-\x{1F3E0}' .
'\x{1F3ED}' .
'\x{1F3F3}' .
'\x{1F3F5}' .
'\x{1F3F7}' .
'\x{1F408}' .
'\x{1F415}' .
'\x{1F41F}' .
'\x{1F426}' .
'\x{1F43F}' .
'\x{1F441}-\x{1F442}' .
'\x{1F446}-\x{1F449}' .
'\x{1F44D}-\x{1F44E}' .
'\x{1F453}' .
'\x{1F46A}' .
'\x{1F47D}' .
'\x{1F4A3}' .
'\x{1F4B0}' .
'\x{1F4B3}' .
'\x{1F4BB}' .
'\x{1F4BF}' .
'\x{1F4CB}' .
'\x{1F4DA}' .
'\x{1F4DF}' .
'\x{1F4E4}-\x{1F4E6}' .
'\x{1F4EA}-\x{1F4ED}' .
'\x{1F4F7}' .
'\x{1F4F9}-\x{1F4FB}' .
'\x{1F4FD}' .
'\x{1F508}' .
'\x{1F50D}' .
'\x{1F512}-\x{1F513}' .
'\x{1F549}-\x{1F54A}' .
'\x{1F550}-\x{1F567}' .
'\x{1F56F}-\x{1F570}' .
'\x{1F573}-\x{1F579}' .
'\x{1F587}' .
'\x{1F58A}-\x{1F58D}' .
'\x{1F590}' .
'\x{1F5A5}' .
'\x{1F5A8}' .
'\x{1F5B1}-\x{1F5B2}' .
'\x{1F5BC}' .
'\x{1F5C2}-\x{1F5C4}' .
'\x{1F5D1}-\x{1F5D3}' .
'\x{1F5DC}-\x{1F5DE}' .
'\x{1F5E1}' .
'\x{1F5E3}' .
'\x{1F5E8}' .
'\x{1F5EF}' .
'\x{1F5F3}' .
'\x{1F5FA}' .
'\x{1F610}' .
'\x{1F687}' .
'\x{1F68D}' .
'\x{1F691}' .
'\x{1F694}' .
'\x{1F698}' .
'\x{1F6AD}' .
'\x{1F6B2}' .
'\x{1F6B9}-\x{1F6BA}' .
'\x{1F6BC}' .
'\x{1F6CB}' .
'\x{1F6CD}-\x{1F6CF}' .
'\x{1F6E0}-\x{1F6E5}' .
'\x{1F6E9}' .
'\x{1F6F0}' .
'\x{1F6F3}',
'\x{FE02}' =>
'\x{13117}' .
'\x{13139}' .
'\x{13183}' .
'\x{131A0}' .
'\x{131BA}' .
'\x{131EE}' .
'\x{13216}' .
'\x{1327B}' .
'\x{132A4}' .
'\x{132E7}' .
'\x{132E9}' .
'\x{132F8}' .
'\x{132FD}' .
'\x{13302}-\x{13303}' .
'\x{13310}-\x{13314}' .
'\x{1331C}' .
'\x{13321}' .
'\x{13331}' .
'\x{1334A}' .
'\x{13361}' .
'\x{13373}' .
'\x{1337D}' .
'\x{13385}' .
'\x{133AF}-\x{133B0}' .
'\x{133BF}' .
'\x{133DD}' .
'\x{13419}' .
'\x{1342C}' .
'\x{1342E}' .
'\x{537F}' .
'\x{5BE7}' .
'\x{618E}' .
'\x{61F2}' .
'\x{6717}' .
'\x{6A02}' .
'\x{6BBA}' .
'\x{6D41}' .
'\x{7DF4}' .
'\x{8005}' .
'\x{980B}' .
'\x{9F9C}',
'\x{FE01}' =>
'\x{1D49C}' .
'\x{212C}' .
'\x{1D49E}-\x{1D49F}' .
'\x{2130}-\x{2131}' .
'\x{1D4A2}' .
'\x{210B}' .
'\x{2110}' .
'\x{1D4A5}-\x{1D4A6}' .
'\x{2112}' .
'\x{2133}' .
'\x{1D4A9}-\x{1D4AC}' .
'\x{211B}' .
'\x{1D4AE}-\x{1D4B5}' .
'\x{3001}-\x{3002}' .
'\x{FF01}' .
'\x{FF0C}' .
'\x{FF0E}' .
'\x{FF1A}-\x{FF1B}' .
'\x{FF1F}' .
'\x{13093}' .
'\x{130A9}' .
'\x{13187}' .
'\x{131B1}' .
'\x{131EE}' .
'\x{131F8}-\x{131FA}' .
'\x{13257}' .
'\x{1327F}' .
'\x{132A4}' .
'\x{13308}' .
'\x{13312}-\x{13314}' .
'\x{1331B}' .
'\x{13321}-\x{13322}' .
'\x{13331}' .
'\x{13419}' .
'\x{3B9D}' .
'\x{3EB8}' .
'\x{4039}' .
'\x{4FAE}' .
'\x{50E7}' .
'\x{514D}' .
'\x{51B5}' .
'\x{5207}' .
'\x{52C7}' .
'\x{52C9}' .
'\x{52E4}' .
'\x{52FA}' .
'\x{5317}' .
'\x{5351}' .
'\x{537F}' .
'\x{5584}' .
'\x{5599}' .
'\x{559D}' .
'\x{5606}' .
'\x{585A}' .
'\x{5B3E}' .
'\x{5BE7}' .
'\x{5C6E}' .
'\x{5ECA}' .
'\x{5F22}' .
'\x{6094}' .
'\x{614C}' .
'\x{614E}' .
'\x{618E}' .
'\x{61F2}' .
'\x{61F6}' .
'\x{654F}' .
'\x{6674}' .
'\x{6691}' .
'\x{6717}' .
'\x{671B}' .
'\x{6885}' .
'\x{6A02}' .
'\x{6BBA}' .
'\x{6D41}' .
'\x{6D77}' .
'\x{6ECB}' .
'\x{6F22}' .
'\x{701E}' .
'\x{716E}' .
'\x{7235}' .
'\x{732A}' .
'\x{7387}' .
'\x{7471}' .
'\x{7570}' .
'\x{76CA}' .
'\x{76F4}' .
'\x{771F}' .
'\x{774A}' .
'\x{788C}' .
'\x{78CC}' .
'\x{7956}' .
'\x{798F}' .
'\x{7A40}' .
'\x{7BC0}' .
'\x{7DF4}' .
'\x{8005}' .
'\x{8201}' .
'\x{8279}' .
'\x{82E5}' .
'\x{8457}' .
'\x{865C}' .
'\x{8779}' .
'\x{8996}' .
'\x{8AAA}' .
'\x{8AED}' .
'\x{8AF8}' .
'\x{8AFE}' .
'\x{8B01}' .
'\x{8B39}' .
'\x{8B8A}' .
'\x{8D08}' .
'\x{8F38}' .
'\x{9038}' .
'\x{96E3}' .
'\x{9756}' .
'\x{97FF}' .
'\x{980B}' .
'\x{983B}' .
'\x{9B12}' .
'\x{9F9C}' .
'\x{22331}' .
'\x{25AA7}',
Find: Select
'\x{FE00}' => '\x{0030}\x{2205}\x{2229}-\x{222A}\x{2268}-\x{2269}\x{2272}-\x{2273}\x{228A}-\x{228B}\x{2293}-\x{2295}\x{2297}\x{229C}\x{22DA}-\x{22DB}\x{2A3C}-\x{2A3D}\x{2A9D}-\x{2A9E}\x{2AAC}-\x{2AAD}\x{2ACB}-\x{2ACC}\x{FF10}\x{1D49C}\x{212C}\x{1D49E}-\x{1D49F}\x{2130}-\x{2131}\x{1D4A2}\x{210B}\x{2110}\x{1D4A5}-\x{1D4A6}\x{2112}\x{2133}\x{1D4A9}-\x{1D4AC}\x{211B}\x{1D4AE}-\x{1D4B5}\x{3001}-\x{3002}\x{FF01}\x{FF0C}\x{FF0E}\x{FF1A}-\x{FF1B}\x{FF1F}\x{1000}\x{1002}\x{1004}\x{1010}-\x{1011}\x{1015}\x{1019}-\x{101A}\x{101C}-\x{101D}\x{1022}\x{1031}\x{1075}\x{1078}\x{107A}\x{1080}\x{AA60}-\x{AA66}\x{AA6B}-\x{AA6C}\x{AA6F}\x{AA7A}\x{A856}\x{A85C}\x{A85E}-\x{A860}\x{A868}\x{10AC5}-\x{10AC6}\x{10AD6}-\x{10AD7}\x{10AE1}\x{349E}\x{34B9}\x{34BB}\x{34DF}\x{3515}\x{36EE}\x{36FC}\x{3781}\x{382F}\x{3862}\x{387C}\x{38C7}\x{38E3}\x{391C}\x{393A}\x{3A2E}\x{3A6C}\x{3AE4}\x{3B08}\x{3B19}\x{3B49}\x{3B9D}\x{3C18}\x{3C4E}\x{3D33}\x{3D96}\x{3EAC}\x{3EB8}\x{3F1B}\x{3FFC}\x{4008}\x{4018}\x{4039}\x{4046}\x{4096}\x{40E3}\x{412F}\x{4202}\x{4227}\x{42A0}\x{4301}\x{4334}\x{4359}\x{43D5}\x{43D9}\x{440B}\x{446B}\x{452B}\x{455D}\x{4561}\x{456B}\x{45D7}\x{45F9}\x{4635}\x{46BE}\x{46C7}\x{4995}\x{49E6}\x{4A6E}\x{4A76}\x{4AB2}\x{4B33}\x{4BCE}\x{4CCE}\x{4CED}\x{4CF8}\x{4D56}\x{4E0D}\x{4E26}\x{4E32}\x{4E38}-\x{4E39}\x{4E3D}\x{4E41}\x{4E82}\x{4E86}\x{4EAE}\x{4EC0}\x{4ECC}\x{4EE4}\x{4F60}\x{4F80}\x{4F86}\x{4F8B}\x{4FAE}\x{4FBB}\x{4FBF}\x{5002}\x{502B}\x{507A}\x{5099}\x{50CF}\x{50DA}\x{50E7}\x{5140}\x{5145}\x{514D}\x{5154}\x{5164}\x{5167}-\x{5169}\x{516D}\x{5177}\x{5180}\x{518D}\x{5192}\x{5195}\x{5197}\x{51A4}\x{51AC}\x{51B5}\x{51B7}\x{51C9}\x{51CC}\x{51DC}\x{51DE}\x{51F5}\x{5203}\x{5207}\x{5217}\x{5229}\x{523A}-\x{523B}\x{5246}\x{5272}\x{5277}\x{5289}\x{529B}\x{52A3}\x{52B3}\x{52C7}\x{52C9}\x{52D2}\x{52DE}\x{52E4}\x{52F5}\x{52FA}\x{5305}-\x{5306}\x{5317}\x{533F}\x{5349}\x{5351}\x{535A}\x{5373}\x{5375}\x{537D}\x{537F}\x{53C3}\x{53CA}\x{53DF}\x{53E5}\x{53EB}\x{53F1}\x{5406}\x{540F}\x{541D}\x{5438}\x{5442}\x{5448}\x{5468}\x{549E}\x{54A2}\x{54BD}\x{54F6}\x{5510}\x{5553}\x{5555}\x{5563}\x{5584}\x{5587}\x{5599}\x{559D}\x{55AB}\x{55B3}\x{55C0}\x{55C2}\x{55E2}\x{5606}\x{5651}\x{5668}\x{5674}\x{56F9}\x{5716}-\x{5717}\x{578B}\x{57CE}\x{57F4}\x{580D}\x{5831}-\x{5832}\x{5840}\x{585A}\x{585E}\x{58A8}\x{58AC}\x{58B3}\x{58D8}\x{58DF}\x{58EE}\x{58F2}\x{58F7}\x{5906}\x{591A}\x{5922}\x{5944}\x{5948}\x{5951}\x{5954}\x{5962}\x{5973}\x{59D8}\x{59EC}\x{5A1B}\x{5A27}\x{5A62}\x{5A66}\x{5AB5}\x{5B08}\x{5B28}\x{5B3E}\x{5B85}\x{5BC3}\x{5BD8}\x{5BE7}\x{5BEE}\x{5BF3}\x{5BFF}\x{5C06}\x{5C22}\x{5C3F}\x{5C60}\x{5C62}\x{5C64}-\x{5C65}\x{5C6E}\x{5C8D}\x{5CC0}\x{5D19}\x{5D43}\x{5D50}\x{5D6B}\x{5D6E}\x{5D7C}\x{5DB2}\x{5DBA}\x{5DE1}-\x{5DE2}\x{5DFD}\x{5E28}\x{5E3D}\x{5E69}\x{5E74}\x{5EA6}\x{5EB0}\x{5EB3}\x{5EB6}\x{5EC9}-\x{5ECA}\x{5ED2}-\x{5ED3}\x{5ED9}\x{5EEC}\x{5EFE}\x{5F04}\x{5F22}\x{5F53}\x{5F62}\x{5F69}\x{5F6B}\x{5F8B}\x{5F9A}\x{5FA9}\x{5FAD}\x{5FCD}\x{5FD7}\x{5FF5}\x{5FF9}\x{6012}\x{601C}\x{6075}\x{6081}\x{6094}\x{60C7}\x{60D8}\x{60E1}\x{6108}\x{6144}\x{6148}\x{614C}\x{614E}\x{6160}\x{6168}\x{617A}\x{618E}\x{6190}\x{61A4}\x{61AF}\x{61B2}\x{61DE}\x{61F2}\x{61F6}\x{6200}\x{6210}\x{621B}\x{622E}\x{6234}\x{625D}\x{62B1}\x{62C9}\x{62CF}\x{62D3}-\x{62D4}\x{62FC}\x{62FE}\x{633D}\x{6350}\x{6368}\x{637B}\x{6383}\x{63A0}\x{63A9}\x{63C4}-\x{63C5}\x{63E4}\x{641C}\x{6422}\x{6452}\x{6469}\x{6477}\x{647E}\x{649A}\x{649D}\x{64C4}\x{654F}\x{6556}\x{656C}\x{6578}\x{6599}\x{65C5}\x{65E2}-\x{65E3}\x{6613}\x{6649}\x{6674}\x{6688}\x{6691}\x{669C}\x{66B4}\x{66C6}\x{66F4}\x{66F8}\x{6700}\x{6717}\x{671B}\x{6721}\x{674E}\x{6753}\x{6756}\x{675E}\x{677B}\x{6785}\x{6797}\x{67F3}\x{67FA}\x{6817}\x{681F}\x{6852}\x{6881}\x{6885}\x{688E}\x{68A8}\x{6914}\x{6942}\x{69A3}\x{69EA}\x{6A02}\x{6A13}\x{6AA8}\x{6AD3}\x{6ADB}\x{6B04}\x{6B21}\x{6B54}\x{6B72}\x{6B77}\x{6B79}\x{6B9F}\x{6BAE}\x{6BBA}-\x{6BBB}\x{6C4E}\x{6C67}\x{6C88}\x{6CBF}\x{6CCC}-\x{6CCD}\x{6CE5}\x{6D16}\x{6D1B}\x{6D1E}\x{6D34}\x{6D3E}\x{6D41}\x{6D69}-\x{6D6A}\x{6D77}-\x{6D78}\x{6D85}\x{6DCB}\x{6DDA}\x{6DEA}\x{6DF9}\x{6E1A}\x{6E2F}\x{6E6E}\x{6E9C}\x{6EBA}\x{6EC7}\x{6ECB}\x{6ED1}\x{6EDB}\x{6F0F}\x{6F22}-\x{6F23}\x{6F6E}\x{6FC6}\x{6FEB}\x{6FFE}\x{701B}\x{701E}\x{7039}\x{704A}\x{7070}\x{7077}\x{707D}\x{7099}\x{70AD}\x{70C8}\x{70D9}\x{7145}\x{7149}\x{716E}\x{719C}\x{71CE}\x{71D0}\x{7210}\x{721B}\x{7228}\x{722B}\x{7235}\x{7250}\x{7262}\x{7280}\x{7295}\x{72AF}\x{72C0}\x{72FC}\x{732A}\x{7375}\x{737A}\x{7387}\x{738B}\x{73A5}\x{73B2}\x{73DE}\x{7406}\x{7409}\x{7422}\x{7447}\x{745C}\x{7469}\x{7471}\x{7485}\x{7489}\x{7498}\x{74CA}\x{7506}\x{7524}\x{753B}\x{753E}\x{7559}\x{7565}\x{7570}\x{75E2}\x{7610}\x{761D}\x{761F}\x{7642}\x{7669}\x{76CA}\x{76DB}\x{76E7}\x{76F4}\x{7701}\x{771E}-\x{771F}\x{7740}\x{774A}\x{778B}\x{77A7}\x{784E}\x{786B}\x{788C}\x{7891}\x{78CA}\x{78CC}\x{78FB}\x{792A}\x{793C}\x{793E}\x{7948}-\x{7949}\x{7950}\x{7956}\x{795D}-\x{795E}\x{7965}\x{797F}\x{798D}-\x{798F}\x{79AE}\x{79CA}\x{79EB}\x{7A1C}\x{7A40}\x{7A4A}\x{7A4F}\x{7A81}\x{7AB1}\x{7ACB}\x{7AEE}\x{7B20}\x{7BC0}\x{7BC6}\x{7BC9}\x{7C3E}\x{7C60}\x{7C7B}\x{7C92}\x{7CBE}\x{7CD2}\x{7CD6}\x{7CE3}\x{7CE7}-\x{7CE8}\x{7D00}\x{7D10}\x{7D22}\x{7D2F}\x{7D5B}\x{7D63}\x{7DA0}\x{7DBE}\x{7DC7}\x{7DF4}\x{7E02}\x{7E09}\x{7E37}\x{7E41}\x{7E45}\x{7F3E}\x{7F72}\x{7F79}-\x{7F7A}\x{7F85}\x{7F95}\x{7F9A}\x{7FBD}\x{7FFA}\x{8001}\x{8005}\x{8046}\x{8060}\x{806F}-\x{8070}\x{807E}\x{808B}\x{80AD}\x{80B2}\x{8103}\x{813E}\x{81D8}\x{81E8}\x{81ED}\x{8201}\x{8204}\x{8218}\x{826F}\x{8279}\x{828B}\x{8291}\x{829D}\x{82B1}\x{82B3}\x{82BD}\x{82E5}-\x{82E6}\x{831D}\x{8323}\x{8336}\x{8352}-\x{8353}\x{8363}\x{83AD}\x{83BD}\x{83C9}-\x{83CA}\x{83CC}\x{83DC}\x{83E7}\x{83EF}\x{83F1}\x{843D}\x{8449}\x{8457}\x{84EE}\x{84F1}\x{84F3}\x{84FC}\x{8516}\x{8564}\x{85CD}\x{85FA}\x{8606}\x{8612}\x{862D}\x{863F}\x{8650}\x{865C}\x{8667}\x{8669}\x{8688}\x{86A9}\x{86E2}\x{870E}\x{8728}\x{876B}\x{8779}\x{8786}\x{87BA}\x{87E1}\x{8801}\x{881F}\x{884C}\x{8860}\x{8863}\x{88C2}\x{88CF}\x{88D7}\x{88DE}\x{88E1}\x{88F8}\x{88FA}\x{8910}\x{8941}\x{8964}\x{8986}\x{898B}\x{8996}\x{8AA0}\x{8AAA}\x{8ABF}\x{8ACB}\x{8AD2}\x{8AD6}\x{8AED}\x{8AF8}\x{8AFE}\x{8B01}\x{8B39}\x{8B58}\x{8B80}\x{8B8A}\x{8C48}\x{8C55}\x{8CAB}\x{8CC1}-\x{8CC2}\x{8CC8}\x{8CD3}\x{8D08}\x{8D1B}\x{8D77}\x{8DBC}\x{8DCB}\x{8DEF}-\x{8DF0}\x{8ECA}\x{8ED4}\x{8F26}\x{8F2A}\x{8F38}\x{8F3B}\x{8F62}\x{8F9E}\x{8FB0}\x{8FB6}\x{9023}\x{9038}\x{9072}\x{907C}\x{908F}\x{9094}\x{90CE}\x{90DE}\x{90F1}\x{90FD}\x{9111}\x{911B}\x{916A}\x{9199}\x{91B4}\x{91CC}\x{91CF}\x{91D1}\x{9234}\x{9238}\x{9276}\x{927C}\x{92D7}-\x{92D8}\x{9304}\x{934A}\x{93F9}\x{9415}\x{958B}\x{95AD}\x{95B7}\x{962E}\x{964B}\x{964D}\x{9675}\x{9678}\x{967C}\x{9686}\x{96A3}\x{96B7}-\x{96B8}\x{96C3}\x{96E2}-\x{96E3}\x{96F6}-\x{96F7}\x{9723}\x{9732}\x{9748}\x{9756}\x{97DB}\x{97E0}\x{97FF}\x{980B}\x{9818}\x{9829}\x{983B}\x{985E}\x{98E2}\x{98EF}\x{98FC}\x{9928}-\x{9929}\x{99A7}\x{99C2}\x{99F1}\x{99FE}\x{9A6A}\x{9B12}\x{9B6F}\x{9C40}\x{9C57}\x{9CFD}\x{9D67}\x{9DB4}\x{9DFA}\x{9E1E}\x{9E7F}\x{9E97}\x{9E9F}\x{9EBB}\x{9ECE}\x{9EF9}\x{9EFE}\x{9F05}\x{9F0F}\x{9F16}\x{9F3B}\x{9F43}\x{9F8D}-\x{9F8E}\x{9F9C}\x{20122}\x{2051C}\x{20525}\x{2054B}\x{2063A}\x{20804}\x{208DE}\x{20A2C}\x{20B63}\x{214E4}\x{216A8}\x{216EA}\x{219C8}\x{21B18}\x{21D0B}\x{21DE4}\x{21DE6}\x{22183}\x{2219F}\x{22331}\x{226D4}\x{22844}\x{2284A}\x{22B0C}\x{22BF1}\x{2300A}\x{232B8}\x{2335F}\x{23393}\x{2339C}\x{233C3}\x{233D5}\x{2346D}\x{236A3}\x{238A7}\x{23A8D}\x{23AFA}\x{23CBC}\x{23D1E}\x{23ED1}\x{23F5E}\x{23F8E}\x{24263}\x{242EE}\x{243AB}\x{24608}\x{24735}\x{24814}\x{24C36}\x{24C92}\x{24FA1}\x{24FB8}\x{25044}\x{250F2}-\x{250F3}\x{25119}\x{25133}\x{25249}\x{2541D}\x{25626}\x{2569A}\x{256C5}\x{2597C}\x{25AA7}\x{25BAB}\x{25C80}\x{25CD0}\x{25F86}\x{261DA}\x{26228}\x{26247}\x{262D9}\x{2633E}\x{264DA}\x{26523}\x{265A8}\x{267A7}\x{267B5}\x{26B3C}\x{26C36}\x{26CD5}\x{26D6B}\x{26F2C}\x{26FB1}\x{270D2}\x{273CA}\x{27667}\x{278AE}\x{27966}\x{27CA8}\x{27ED3}\x{27F2F}\x{285D2}\x{285ED}\x{2872E}\x{28BFA}\x{28D77}\x{29145}\x{291DF}\x{2921A}\x{2940A}\x{29496}\x{295B6}\x{29B30}\x{2A0CE}\x{2A105}\x{2A20E}\x{2A291}\x{2A392}\x{2A600}',
'\x{180D}' => '\x{1828}\x{182C}-\x{182D}\x{1873}-\x{1874}\x{1887}',
'\x{180C}' => '\x{1820}\x{1825}-\x{1826}\x{1828}\x{182C}-\x{182D}\x{1830}\x{1836}\x{1847}\x{185E}\x{1868}\x{1873}-\x{1874}\x{1887}',
'\x{180B}' => '\x{1820}-\x{1826}\x{1828}\x{182A}\x{182C}-\x{182D}\x{1830}\x{1832}-\x{1833}\x{1835}-\x{1836}\x{1838}\x{1844}-\x{1849}\x{184D}-\x{184E}\x{185D}-\x{185E}\x{1860}\x{1863}\x{1868}-\x{1869}\x{186F}\x{1873}-\x{1874}\x{1876}\x{1880}-\x{1881}\x{1887}-\x{1888}\x{188A}',
Replace With: Select
'\x{FE00}' =>
'\x{0030}' .
'\x{2205}' .
'\x{2229}-\x{222A}' .
'\x{2268}-\x{2269}' .
'\x{2272}-\x{2273}' .
'\x{228A}-\x{228B}' .
'\x{2293}-\x{2295}' .
'\x{2297}' .
'\x{229C}' .
'\x{22DA}-\x{22DB}' .
'\x{2A3C}-\x{2A3D}' .
'\x{2A9D}-\x{2A9E}' .
'\x{2AAC}-\x{2AAD}' .
'\x{2ACB}-\x{2ACC}' .
'\x{FF10}' .
'\x{1D49C}' .
'\x{212C}' .
'\x{1D49E}-\x{1D49F}' .
'\x{2130}-\x{2131}' .
'\x{1D4A2}' .
'\x{210B}' .
'\x{2110}' .
'\x{1D4A5}-\x{1D4A6}' .
'\x{2112}' .
'\x{2133}' .
'\x{1D4A9}-\x{1D4AC}' .
'\x{211B}' .
'\x{1D4AE}-\x{1D4B5}' .
'\x{3001}-\x{3002}' .
'\x{FF01}' .
'\x{FF0C}' .
'\x{FF0E}' .
'\x{FF1A}-\x{FF1B}' .
'\x{FF1F}' .
'\x{1000}' .
'\x{1002}' .
'\x{1004}' .
'\x{1010}-\x{1011}' .
'\x{1015}' .
'\x{1019}-\x{101A}' .
'\x{101C}-\x{101D}' .
'\x{1022}' .
'\x{1031}' .
'\x{1075}' .
'\x{1078}' .
'\x{107A}' .
'\x{1080}' .
'\x{AA60}-\x{AA66}' .
'\x{AA6B}-\x{AA6C}' .
'\x{AA6F}' .
'\x{AA7A}' .
'\x{A856}' .
'\x{A85C}' .
'\x{A85E}-\x{A860}' .
'\x{A868}' .
'\x{10AC5}-\x{10AC6}' .
'\x{10AD6}-\x{10AD7}' .
'\x{10AE1}' .
'\x{13091}-\x{13092}' .
'\x{1310F}' .
'\x{1311C}' .
'\x{13121}' .
'\x{13127}' .
'\x{13139}' .
'\x{131A0}' .
'\x{131B1}' .
'\x{131B8}-\x{131B9}' .
'\x{131CB}' .
'\x{131F9}-\x{131FA}' .
'\x{1327F}' .
'\x{13285}' .
'\x{1328C}' .
'\x{132AA}' .
'\x{132CB}' .
'\x{132DC}' .
'\x{132E7}' .
'\x{13307}' .
'\x{1331B}' .
'\x{13322}' .
'\x{1333B}-\x{1333C}' .
'\x{13377}-\x{13378}' .
'\x{13399}-\x{1339A}' .
'\x{133D3}' .
'\x{133F2}' .
'\x{133F5}-\x{133F6}' .
'\x{13403}' .
'\x{13416}' .
'\x{13419}-\x{1341A}' .
'\x{13423}' .
'\x{13443}-\x{13446}' .
'\x{349E}' .
'\x{34B9}' .
'\x{34BB}' .
'\x{34DF}' .
'\x{3515}' .
'\x{36EE}' .
'\x{36FC}' .
'\x{3781}' .
'\x{382F}' .
'\x{3862}' .
'\x{387C}' .
'\x{38C7}' .
'\x{38E3}' .
'\x{391C}' .
'\x{393A}' .
'\x{3A2E}' .
'\x{3A6C}' .
'\x{3AE4}' .
'\x{3B08}' .
'\x{3B19}' .
'\x{3B49}' .
'\x{3B9D}' .
'\x{3C18}' .
'\x{3C4E}' .
'\x{3D33}' .
'\x{3D96}' .
'\x{3EAC}' .
'\x{3EB8}' .
'\x{3F1B}' .
'\x{3FFC}' .
'\x{4008}' .
'\x{4018}' .
'\x{4039}' .
'\x{4046}' .
'\x{4096}' .
'\x{40E3}' .
'\x{412F}' .
'\x{4202}' .
'\x{4227}' .
'\x{42A0}' .
'\x{4301}' .
'\x{4334}' .
'\x{4359}' .
'\x{43D5}' .
'\x{43D9}' .
'\x{440B}' .
'\x{446B}' .
'\x{452B}' .
'\x{455D}' .
'\x{4561}' .
'\x{456B}' .
'\x{45D7}' .
'\x{45F9}' .
'\x{4635}' .
'\x{46BE}' .
'\x{46C7}' .
'\x{4995}' .
'\x{49E6}' .
'\x{4A6E}' .
'\x{4A76}' .
'\x{4AB2}' .
'\x{4B33}' .
'\x{4BCE}' .
'\x{4CCE}' .
'\x{4CED}' .
'\x{4CF8}' .
'\x{4D56}' .
'\x{4E0D}' .
'\x{4E26}' .
'\x{4E32}' .
'\x{4E38}-\x{4E39}' .
'\x{4E3D}' .
'\x{4E41}' .
'\x{4E82}' .
'\x{4E86}' .
'\x{4EAE}' .
'\x{4EC0}' .
'\x{4ECC}' .
'\x{4EE4}' .
'\x{4F60}' .
'\x{4F80}' .
'\x{4F86}' .
'\x{4F8B}' .
'\x{4FAE}' .
'\x{4FBB}' .
'\x{4FBF}' .
'\x{5002}' .
'\x{502B}' .
'\x{507A}' .
'\x{5099}' .
'\x{50CF}' .
'\x{50DA}' .
'\x{50E7}' .
'\x{5140}' .
'\x{5145}' .
'\x{514D}' .
'\x{5154}' .
'\x{5164}' .
'\x{5167}-\x{5169}' .
'\x{516D}' .
'\x{5177}' .
'\x{5180}' .
'\x{518D}' .
'\x{5192}' .
'\x{5195}' .
'\x{5197}' .
'\x{51A4}' .
'\x{51AC}' .
'\x{51B5}' .
'\x{51B7}' .
'\x{51C9}' .
'\x{51CC}' .
'\x{51DC}' .
'\x{51DE}' .
'\x{51F5}' .
'\x{5203}' .
'\x{5207}' .
'\x{5217}' .
'\x{5229}' .
'\x{523A}-\x{523B}' .
'\x{5246}' .
'\x{5272}' .
'\x{5277}' .
'\x{5289}' .
'\x{529B}' .
'\x{52A3}' .
'\x{52B3}' .
'\x{52C7}' .
'\x{52C9}' .
'\x{52D2}' .
'\x{52DE}' .
'\x{52E4}' .
'\x{52F5}' .
'\x{52FA}' .
'\x{5305}-\x{5306}' .
'\x{5317}' .
'\x{533F}' .
'\x{5349}' .
'\x{5351}' .
'\x{535A}' .
'\x{5373}' .
'\x{5375}' .
'\x{537D}' .
'\x{537F}' .
'\x{53C3}' .
'\x{53CA}' .
'\x{53DF}' .
'\x{53E5}' .
'\x{53EB}' .
'\x{53F1}' .
'\x{5406}' .
'\x{540F}' .
'\x{541D}' .
'\x{5438}' .
'\x{5442}' .
'\x{5448}' .
'\x{5468}' .
'\x{549E}' .
'\x{54A2}' .
'\x{54BD}' .
'\x{54F6}' .
'\x{5510}' .
'\x{5553}' .
'\x{5555}' .
'\x{5563}' .
'\x{5584}' .
'\x{5587}' .
'\x{5599}' .
'\x{559D}' .
'\x{55AB}' .
'\x{55B3}' .
'\x{55C0}' .
'\x{55C2}' .
'\x{55E2}' .
'\x{5606}' .
'\x{5651}' .
'\x{5668}' .
'\x{5674}' .
'\x{56F9}' .
'\x{5716}-\x{5717}' .
'\x{578B}' .
'\x{57CE}' .
'\x{57F4}' .
'\x{580D}' .
'\x{5831}-\x{5832}' .
'\x{5840}' .
'\x{585A}' .
'\x{585E}' .
'\x{58A8}' .
'\x{58AC}' .
'\x{58B3}' .
'\x{58D8}' .
'\x{58DF}' .
'\x{58EE}' .
'\x{58F2}' .
'\x{58F7}' .
'\x{5906}' .
'\x{591A}' .
'\x{5922}' .
'\x{5944}' .
'\x{5948}' .
'\x{5951}' .
'\x{5954}' .
'\x{5962}' .
'\x{5973}' .
'\x{59D8}' .
'\x{59EC}' .
'\x{5A1B}' .
'\x{5A27}' .
'\x{5A62}' .
'\x{5A66}' .
'\x{5AB5}' .
'\x{5B08}' .
'\x{5B28}' .
'\x{5B3E}' .
'\x{5B85}' .
'\x{5BC3}' .
'\x{5BD8}' .
'\x{5BE7}' .
'\x{5BEE}' .
'\x{5BF3}' .
'\x{5BFF}' .
'\x{5C06}' .
'\x{5C22}' .
'\x{5C3F}' .
'\x{5C60}' .
'\x{5C62}' .
'\x{5C64}-\x{5C65}' .
'\x{5C6E}' .
'\x{5C8D}' .
'\x{5CC0}' .
'\x{5D19}' .
'\x{5D43}' .
'\x{5D50}' .
'\x{5D6B}' .
'\x{5D6E}' .
'\x{5D7C}' .
'\x{5DB2}' .
'\x{5DBA}' .
'\x{5DE1}-\x{5DE2}' .
'\x{5DFD}' .
'\x{5E28}' .
'\x{5E3D}' .
'\x{5E69}' .
'\x{5E74}' .
'\x{5EA6}' .
'\x{5EB0}' .
'\x{5EB3}' .
'\x{5EB6}' .
'\x{5EC9}-\x{5ECA}' .
'\x{5ED2}-\x{5ED3}' .
'\x{5ED9}' .
'\x{5EEC}' .
'\x{5EFE}' .
'\x{5F04}' .
'\x{5F22}' .
'\x{5F53}' .
'\x{5F62}' .
'\x{5F69}' .
'\x{5F6B}' .
'\x{5F8B}' .
'\x{5F9A}' .
'\x{5FA9}' .
'\x{5FAD}' .
'\x{5FCD}' .
'\x{5FD7}' .
'\x{5FF5}' .
'\x{5FF9}' .
'\x{6012}' .
'\x{601C}' .
'\x{6075}' .
'\x{6081}' .
'\x{6094}' .
'\x{60C7}' .
'\x{60D8}' .
'\x{60E1}' .
'\x{6108}' .
'\x{6144}' .
'\x{6148}' .
'\x{614C}' .
'\x{614E}' .
'\x{6160}' .
'\x{6168}' .
'\x{617A}' .
'\x{618E}' .
'\x{6190}' .
'\x{61A4}' .
'\x{61AF}' .
'\x{61B2}' .
'\x{61DE}' .
'\x{61F2}' .
'\x{61F6}' .
'\x{6200}' .
'\x{6210}' .
'\x{621B}' .
'\x{622E}' .
'\x{6234}' .
'\x{625D}' .
'\x{62B1}' .
'\x{62C9}' .
'\x{62CF}' .
'\x{62D3}-\x{62D4}' .
'\x{62FC}' .
'\x{62FE}' .
'\x{633D}' .
'\x{6350}' .
'\x{6368}' .
'\x{637B}' .
'\x{6383}' .
'\x{63A0}' .
'\x{63A9}' .
'\x{63C4}-\x{63C5}' .
'\x{63E4}' .
'\x{641C}' .
'\x{6422}' .
'\x{6452}' .
'\x{6469}' .
'\x{6477}' .
'\x{647E}' .
'\x{649A}' .
'\x{649D}' .
'\x{64C4}' .
'\x{654F}' .
'\x{6556}' .
'\x{656C}' .
'\x{6578}' .
'\x{6599}' .
'\x{65C5}' .
'\x{65E2}-\x{65E3}' .
'\x{6613}' .
'\x{6649}' .
'\x{6674}' .
'\x{6688}' .
'\x{6691}' .
'\x{669C}' .
'\x{66B4}' .
'\x{66C6}' .
'\x{66F4}' .
'\x{66F8}' .
'\x{6700}' .
'\x{6717}' .
'\x{671B}' .
'\x{6721}' .
'\x{674E}' .
'\x{6753}' .
'\x{6756}' .
'\x{675E}' .
'\x{677B}' .
'\x{6785}' .
'\x{6797}' .
'\x{67F3}' .
'\x{67FA}' .
'\x{6817}' .
'\x{681F}' .
'\x{6852}' .
'\x{6881}' .
'\x{6885}' .
'\x{688E}' .
'\x{68A8}' .
'\x{6914}' .
'\x{6942}' .
'\x{69A3}' .
'\x{69EA}' .
'\x{6A02}' .
'\x{6A13}' .
'\x{6AA8}' .
'\x{6AD3}' .
'\x{6ADB}' .
'\x{6B04}' .
'\x{6B21}' .
'\x{6B54}' .
'\x{6B72}' .
'\x{6B77}' .
'\x{6B79}' .
'\x{6B9F}' .
'\x{6BAE}' .
'\x{6BBA}-\x{6BBB}' .
'\x{6C4E}' .
'\x{6C67}' .
'\x{6C88}' .
'\x{6CBF}' .
'\x{6CCC}-\x{6CCD}' .
'\x{6CE5}' .
'\x{6D16}' .
'\x{6D1B}' .
'\x{6D1E}' .
'\x{6D34}' .
'\x{6D3E}' .
'\x{6D41}' .
'\x{6D69}-\x{6D6A}' .
'\x{6D77}-\x{6D78}' .
'\x{6D85}' .
'\x{6DCB}' .
'\x{6DDA}' .
'\x{6DEA}' .
'\x{6DF9}' .
'\x{6E1A}' .
'\x{6E2F}' .
'\x{6E6E}' .
'\x{6E9C}' .
'\x{6EBA}' .
'\x{6EC7}' .
'\x{6ECB}' .
'\x{6ED1}' .
'\x{6EDB}' .
'\x{6F0F}' .
'\x{6F22}-\x{6F23}' .
'\x{6F6E}' .
'\x{6FC6}' .
'\x{6FEB}' .
'\x{6FFE}' .
'\x{701B}' .
'\x{701E}' .
'\x{7039}' .
'\x{704A}' .
'\x{7070}' .
'\x{7077}' .
'\x{707D}' .
'\x{7099}' .
'\x{70AD}' .
'\x{70C8}' .
'\x{70D9}' .
'\x{7145}' .
'\x{7149}' .
'\x{716E}' .
'\x{719C}' .
'\x{71CE}' .
'\x{71D0}' .
'\x{7210}' .
'\x{721B}' .
'\x{7228}' .
'\x{722B}' .
'\x{7235}' .
'\x{7250}' .
'\x{7262}' .
'\x{7280}' .
'\x{7295}' .
'\x{72AF}' .
'\x{72C0}' .
'\x{72FC}' .
'\x{732A}' .
'\x{7375}' .
'\x{737A}' .
'\x{7387}' .
'\x{738B}' .
'\x{73A5}' .
'\x{73B2}' .
'\x{73DE}' .
'\x{7406}' .
'\x{7409}' .
'\x{7422}' .
'\x{7447}' .
'\x{745C}' .
'\x{7469}' .
'\x{7471}' .
'\x{7485}' .
'\x{7489}' .
'\x{7498}' .
'\x{74CA}' .
'\x{7506}' .
'\x{7524}' .
'\x{753B}' .
'\x{753E}' .
'\x{7559}' .
'\x{7565}' .
'\x{7570}' .
'\x{75E2}' .
'\x{7610}' .
'\x{761D}' .
'\x{761F}' .
'\x{7642}' .
'\x{7669}' .
'\x{76CA}' .
'\x{76DB}' .
'\x{76E7}' .
'\x{76F4}' .
'\x{7701}' .
'\x{771E}-\x{771F}' .
'\x{7740}' .
'\x{774A}' .
'\x{778B}' .
'\x{77A7}' .
'\x{784E}' .
'\x{786B}' .
'\x{788C}' .
'\x{7891}' .
'\x{78CA}' .
'\x{78CC}' .
'\x{78FB}' .
'\x{792A}' .
'\x{793C}' .
'\x{793E}' .
'\x{7948}-\x{7949}' .
'\x{7950}' .
'\x{7956}' .
'\x{795D}-\x{795E}' .
'\x{7965}' .
'\x{797F}' .
'\x{798D}-\x{798F}' .
'\x{79AE}' .
'\x{79CA}' .
'\x{79EB}' .
'\x{7A1C}' .
'\x{7A40}' .
'\x{7A4A}' .
'\x{7A4F}' .
'\x{7A81}' .
'\x{7AB1}' .
'\x{7ACB}' .
'\x{7AEE}' .
'\x{7B20}' .
'\x{7BC0}' .
'\x{7BC6}' .
'\x{7BC9}' .
'\x{7C3E}' .
'\x{7C60}' .
'\x{7C7B}' .
'\x{7C92}' .
'\x{7CBE}' .
'\x{7CD2}' .
'\x{7CD6}' .
'\x{7CE3}' .
'\x{7CE7}-\x{7CE8}' .
'\x{7D00}' .
'\x{7D10}' .
'\x{7D22}' .
'\x{7D2F}' .
'\x{7D5B}' .
'\x{7D63}' .
'\x{7DA0}' .
'\x{7DBE}' .
'\x{7DC7}' .
'\x{7DF4}' .
'\x{7E02}' .
'\x{7E09}' .
'\x{7E37}' .
'\x{7E41}' .
'\x{7E45}' .
'\x{7F3E}' .
'\x{7F72}' .
'\x{7F79}-\x{7F7A}' .
'\x{7F85}' .
'\x{7F95}' .
'\x{7F9A}' .
'\x{7FBD}' .
'\x{7FFA}' .
'\x{8001}' .
'\x{8005}' .
'\x{8046}' .
'\x{8060}' .
'\x{806F}-\x{8070}' .
'\x{807E}' .
'\x{808B}' .
'\x{80AD}' .
'\x{80B2}' .
'\x{8103}' .
'\x{813E}' .
'\x{81D8}' .
'\x{81E8}' .
'\x{81ED}' .
'\x{8201}' .
'\x{8204}' .
'\x{8218}' .
'\x{826F}' .
'\x{8279}' .
'\x{828B}' .
'\x{8291}' .
'\x{829D}' .
'\x{82B1}' .
'\x{82B3}' .
'\x{82BD}' .
'\x{82E5}-\x{82E6}' .
'\x{831D}' .
'\x{8323}' .
'\x{8336}' .
'\x{8352}-\x{8353}' .
'\x{8363}' .
'\x{83AD}' .
'\x{83BD}' .
'\x{83C9}-\x{83CA}' .
'\x{83CC}' .
'\x{83DC}' .
'\x{83E7}' .
'\x{83EF}' .
'\x{83F1}' .
'\x{843D}' .
'\x{8449}' .
'\x{8457}' .
'\x{84EE}' .
'\x{84F1}' .
'\x{84F3}' .
'\x{84FC}' .
'\x{8516}' .
'\x{8564}' .
'\x{85CD}' .
'\x{85FA}' .
'\x{8606}' .
'\x{8612}' .
'\x{862D}' .
'\x{863F}' .
'\x{8650}' .
'\x{865C}' .
'\x{8667}' .
'\x{8669}' .
'\x{8688}' .
'\x{86A9}' .
'\x{86E2}' .
'\x{870E}' .
'\x{8728}' .
'\x{876B}' .
'\x{8779}' .
'\x{8786}' .
'\x{87BA}' .
'\x{87E1}' .
'\x{8801}' .
'\x{881F}' .
'\x{884C}' .
'\x{8860}' .
'\x{8863}' .
'\x{88C2}' .
'\x{88CF}' .
'\x{88D7}' .
'\x{88DE}' .
'\x{88E1}' .
'\x{88F8}' .
'\x{88FA}' .
'\x{8910}' .
'\x{8941}' .
'\x{8964}' .
'\x{8986}' .
'\x{898B}' .
'\x{8996}' .
'\x{8AA0}' .
'\x{8AAA}' .
'\x{8ABF}' .
'\x{8ACB}' .
'\x{8AD2}' .
'\x{8AD6}' .
'\x{8AED}' .
'\x{8AF8}' .
'\x{8AFE}' .
'\x{8B01}' .
'\x{8B39}' .
'\x{8B58}' .
'\x{8B80}' .
'\x{8B8A}' .
'\x{8C48}' .
'\x{8C55}' .
'\x{8CAB}' .
'\x{8CC1}-\x{8CC2}' .
'\x{8CC8}' .
'\x{8CD3}' .
'\x{8D08}' .
'\x{8D1B}' .
'\x{8D77}' .
'\x{8DBC}' .
'\x{8DCB}' .
'\x{8DEF}-\x{8DF0}' .
'\x{8ECA}' .
'\x{8ED4}' .
'\x{8F26}' .
'\x{8F2A}' .
'\x{8F38}' .
'\x{8F3B}' .
'\x{8F62}' .
'\x{8F9E}' .
'\x{8FB0}' .
'\x{8FB6}' .
'\x{9023}' .
'\x{9038}' .
'\x{9072}' .
'\x{907C}' .
'\x{908F}' .
'\x{9094}' .
'\x{90CE}' .
'\x{90DE}' .
'\x{90F1}' .
'\x{90FD}' .
'\x{9111}' .
'\x{911B}' .
'\x{916A}' .
'\x{9199}' .
'\x{91B4}' .
'\x{91CC}' .
'\x{91CF}' .
'\x{91D1}' .
'\x{9234}' .
'\x{9238}' .
'\x{9276}' .
'\x{927C}' .
'\x{92D7}-\x{92D8}' .
'\x{9304}' .
'\x{934A}' .
'\x{93F9}' .
'\x{9415}' .
'\x{958B}' .
'\x{95AD}' .
'\x{95B7}' .
'\x{962E}' .
'\x{964B}' .
'\x{964D}' .
'\x{9675}' .
'\x{9678}' .
'\x{967C}' .
'\x{9686}' .
'\x{96A3}' .
'\x{96B7}-\x{96B8}' .
'\x{96C3}' .
'\x{96E2}-\x{96E3}' .
'\x{96F6}-\x{96F7}' .
'\x{9723}' .
'\x{9732}' .
'\x{9748}' .
'\x{9756}' .
'\x{97DB}' .
'\x{97E0}' .
'\x{97FF}' .
'\x{980B}' .
'\x{9818}' .
'\x{9829}' .
'\x{983B}' .
'\x{985E}' .
'\x{98E2}' .
'\x{98EF}' .
'\x{98FC}' .
'\x{9928}-\x{9929}' .
'\x{99A7}' .
'\x{99C2}' .
'\x{99F1}' .
'\x{99FE}' .
'\x{9A6A}' .
'\x{9B12}' .
'\x{9B6F}' .
'\x{9C40}' .
'\x{9C57}' .
'\x{9CFD}' .
'\x{9D67}' .
'\x{9DB4}' .
'\x{9DFA}' .
'\x{9E1E}' .
'\x{9E7F}' .
'\x{9E97}' .
'\x{9E9F}' .
'\x{9EBB}' .
'\x{9ECE}' .
'\x{9EF9}' .
'\x{9EFE}' .
'\x{9F05}' .
'\x{9F0F}' .
'\x{9F16}' .
'\x{9F3B}' .
'\x{9F43}' .
'\x{9F8D}-\x{9F8E}' .
'\x{9F9C}' .
'\x{20122}' .
'\x{2051C}' .
'\x{20525}' .
'\x{2054B}' .
'\x{2063A}' .
'\x{20804}' .
'\x{208DE}' .
'\x{20A2C}' .
'\x{20B63}' .
'\x{214E4}' .
'\x{216A8}' .
'\x{216EA}' .
'\x{219C8}' .
'\x{21B18}' .
'\x{21D0B}' .
'\x{21DE4}' .
'\x{21DE6}' .
'\x{22183}' .
'\x{2219F}' .
'\x{22331}' .
'\x{226D4}' .
'\x{22844}' .
'\x{2284A}' .
'\x{22B0C}' .
'\x{22BF1}' .
'\x{2300A}' .
'\x{232B8}' .
'\x{2335F}' .
'\x{23393}' .
'\x{2339C}' .
'\x{233C3}' .
'\x{233D5}' .
'\x{2346D}' .
'\x{236A3}' .
'\x{238A7}' .
'\x{23A8D}' .
'\x{23AFA}' .
'\x{23CBC}' .
'\x{23D1E}' .
'\x{23ED1}' .
'\x{23F5E}' .
'\x{23F8E}' .
'\x{24263}' .
'\x{242EE}' .
'\x{243AB}' .
'\x{24608}' .
'\x{24735}' .
'\x{24814}' .
'\x{24C36}' .
'\x{24C92}' .
'\x{24FA1}' .
'\x{24FB8}' .
'\x{25044}' .
'\x{250F2}-\x{250F3}' .
'\x{25119}' .
'\x{25133}' .
'\x{25249}' .
'\x{2541D}' .
'\x{25626}' .
'\x{2569A}' .
'\x{256C5}' .
'\x{2597C}' .
'\x{25AA7}' .
'\x{25BAB}' .
'\x{25C80}' .
'\x{25CD0}' .
'\x{25F86}' .
'\x{261DA}' .
'\x{26228}' .
'\x{26247}' .
'\x{262D9}' .
'\x{2633E}' .
'\x{264DA}' .
'\x{26523}' .
'\x{265A8}' .
'\x{267A7}' .
'\x{267B5}' .
'\x{26B3C}' .
'\x{26C36}' .
'\x{26CD5}' .
'\x{26D6B}' .
'\x{26F2C}' .
'\x{26FB1}' .
'\x{270D2}' .
'\x{273CA}' .
'\x{27667}' .
'\x{278AE}' .
'\x{27966}' .
'\x{27CA8}' .
'\x{27ED3}' .
'\x{27F2F}' .
'\x{285D2}' .
'\x{285ED}' .
'\x{2872E}' .
'\x{28BFA}' .
'\x{28D77}' .
'\x{29145}' .
'\x{291DF}' .
'\x{2921A}' .
'\x{2940A}' .
'\x{29496}' .
'\x{295B6}' .
'\x{29B30}' .
'\x{2A0CE}' .
'\x{2A105}' .
'\x{2A20E}' .
'\x{2A291}' .
'\x{2A392}' .
'\x{2A600}',
'\x{180D}' =>
'\x{1828}' .
'\x{182C}-\x{182D}' .
'\x{1873}-\x{1874}' .
'\x{1887}',
'\x{180C}' =>
'\x{1820}' .
'\x{1825}-\x{1826}' .
'\x{1828}' .
'\x{182C}-\x{182D}' .
'\x{1830}' .
'\x{1836}' .
'\x{1847}' .
'\x{185E}' .
'\x{1868}' .
'\x{1873}-\x{1874}' .
'\x{1887}',
'\x{180B}' =>
'\x{1820}-\x{1826}' .
'\x{1828}' .
'\x{182A}' .
'\x{182C}-\x{182D}' .
'\x{1830}' .
'\x{1832}-\x{1833}' .
'\x{1835}-\x{1836}' .
'\x{1838}' .
'\x{1844}-\x{1849}' .
'\x{184D}-\x{184E}' .
'\x{185D}-\x{185E}' .
'\x{1860}' .
'\x{1863}' .
'\x{1868}-\x{1869}' .
'\x{186F}' .
'\x{1873}-\x{1874}' .
'\x{1876}' .
'\x{1880}-\x{1881}' .
'\x{1887}-\x{1888}' .
'\x{188A}',
Find: Select
'Join_Causing' => '\x{0640}\x{0883}-\x{0885}',
'Dual_Joining' => '\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{0886}\x{0889}-\x{088D}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B8}\x{08BA}-\x{08C8}',
'Right_Joining' => '\x{0622}-\x{0625}\x{0627}\x{0629}\x{062F}-\x{0632}\x{0648}\x{0671}-\x{0673}\x{0675}-\x{0677}\x{0688}-\x{0699}\x{06C0}\x{06C3}-\x{06CB}\x{06CD}\x{06CF}\x{06D2}-\x{06D3}\x{06D5}\x{06EE}-\x{06EF}\x{0759}-\x{075B}\x{076B}-\x{076C}\x{0771}\x{0773}-\x{0774}\x{0778}-\x{0779}\x{0870}-\x{0882}\x{088E}\x{08AA}-\x{08AC}\x{08AE}\x{08B1}-\x{08B2}\x{08B9}',
'Transparent' => '\x{0610}-\x{061A}\x{061C}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0898}-\x{089F}\x{08CA}-\x{08E1}\x{08E3}-\x{0902}\x{102E0}',
Replace With: Select
'Join_Causing' =>
'\x{0640}' .
'\x{0883}-\x{0885}',
'Dual_Joining' =>
'\x{0620}' .
'\x{0626}' .
'\x{0628}' .
'\x{062A}-\x{062E}' .
'\x{0633}-\x{063F}' .
'\x{0641}-\x{0647}' .
'\x{0649}-\x{064A}' .
'\x{066E}-\x{066F}' .
'\x{0678}-\x{0687}' .
'\x{069A}-\x{06BF}' .
'\x{06C1}-\x{06C2}' .
'\x{06CC}' .
'\x{06CE}' .
'\x{06D0}-\x{06D1}' .
'\x{06FA}-\x{06FC}' .
'\x{06FF}' .
'\x{075C}-\x{076A}' .
'\x{076D}-\x{0770}' .
'\x{0772}' .
'\x{0775}-\x{0777}' .
'\x{077A}-\x{077F}' .
'\x{0886}' .
'\x{0889}-\x{088D}' .
'\x{08A0}-\x{08A9}' .
'\x{08AF}-\x{08B0}' .
'\x{08B3}-\x{08B8}' .
'\x{08BA}-\x{08C8}',
'Right_Joining' =>
'\x{0622}-\x{0625}' .
'\x{0627}' .
'\x{0629}' .
'\x{062F}-\x{0632}' .
'\x{0648}' .
'\x{0671}-\x{0673}' .
'\x{0675}-\x{0677}' .
'\x{0688}-\x{0699}' .
'\x{06C0}' .
'\x{06C3}-\x{06CB}' .
'\x{06CD}' .
'\x{06CF}' .
'\x{06D2}-\x{06D3}' .
'\x{06D5}' .
'\x{06EE}-\x{06EF}' .
'\x{0759}-\x{075B}' .
'\x{076B}-\x{076C}' .
'\x{0771}' .
'\x{0773}-\x{0774}' .
'\x{0778}-\x{0779}' .
'\x{0870}-\x{0882}' .
'\x{088E}' .
'\x{08AA}-\x{08AC}' .
'\x{08AE}' .
'\x{08B1}-\x{08B2}' .
'\x{08B9}',
'Transparent' =>
'\x{0610}-\x{061A}' .
'\x{061C}' .
'\x{061C}' .
'\x{064B}-\x{065F}' .
'\x{0670}' .
'\x{06D6}-\x{06DC}' .
'\x{06DF}-\x{06E4}' .
'\x{06E7}-\x{06E8}' .
'\x{06EA}-\x{06ED}' .
'\x{0898}-\x{089F}' .
'\x{08CA}-\x{08E1}' .
'\x{08E3}-\x{0902}' .
'\x{102E0}' .
'\x{10EFD}-\x{10EFF}',
Find: Select
'Join_Causing' => '\x{0640}',
'Dual_Joining' => '\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{0860}\x{0862}-\x{0865}\x{0868}',
'Right_Joining' => '\x{0710}\x{0715}-\x{0719}\x{071E}\x{0728}\x{072A}\x{072C}\x{072F}\x{074D}\x{0867}\x{0869}-\x{086A}',
'Transparent' => '\x{061C}\x{0670}\x{070F}\x{0711}\x{0730}-\x{074A}',
Replace With: Select
'Join_Causing' =>
'\x{0640}',
'Dual_Joining' =>
'\x{0712}-\x{0714}' .
'\x{071A}-\x{071D}' .
'\x{071F}-\x{0727}' .
'\x{0729}' .
'\x{072B}' .
'\x{072D}-\x{072E}' .
'\x{074E}-\x{0758}' .
'\x{0860}' .
'\x{0862}-\x{0865}' .
'\x{0868}',
'Right_Joining' =>
'\x{0710}' .
'\x{0715}-\x{0719}' .
'\x{071E}' .
'\x{0728}' .
'\x{072A}' .
'\x{072C}' .
'\x{072F}' .
'\x{074D}' .
'\x{0867}' .
'\x{0869}-\x{086A}',
'Transparent' =>
'\x{061C}' .
'\x{0670}' .
'\x{070F}' .
'\x{0711}' .
'\x{0730}-\x{074A}',
Find: Select
'Join_Causing' => '\x{0640}',
'Dual_Joining' => '\x{1E900}-\x{1E943}',
'Transparent' => '\x{1E944}-\x{1E94A}\x{1E94B}',
),
'Tirhuta' => array(
'Dual_Joining' => '\x{A840}-\x{A871}',
'Transparent' => '\x{0951}-\x{0957}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}',
),
'Nko' => array(
'Join_Causing' => '\x{07FA}',
'Dual_Joining' => '\x{07CA}-\x{07EA}',
'Transparent' => '\x{07EB}-\x{07F3}\x{07FD}',
),
'Hanifi_Rohingya' => array(
'Join_Causing' => '\x{0640}',
'Dual_Joining' => '\x{10D01}-\x{10D21}\x{10D23}',
'Right_Joining' => '\x{10D22}',
'Left_Joining' => '\x{10D00}',
'Transparent' => '\x{10D24}-\x{10D27}',
),
Replace With: Select
'Join_Causing' =>
'\x{0640}',
'Dual_Joining' =>
'\x{1E900}-\x{1E943}',
'Transparent' =>
'\x{1E944}-\x{1E94A}' .
'\x{1E94B}',
),
'Tirhuta' => array(
'Dual_Joining' =>
'\x{A840}-\x{A871}',
'Transparent' =>
'\x{0951}-\x{0957}' .
'\x{114B3}-\x{114B8}' .
'\x{114BA}' .
'\x{114BF}-\x{114C0}' .
'\x{114C2}-\x{114C3}',
),
'Nko' => array(
'Join_Causing' =>
'\x{07FA}',
'Dual_Joining' =>
'\x{07CA}-\x{07EA}',
'Transparent' =>
'\x{07EB}-\x{07F3}' .
'\x{07FD}',
),
'Hanifi_Rohingya' => array(
'Join_Causing' =>
'\x{0640}',
'Dual_Joining' =>
'\x{10D01}-\x{10D21}' .
'\x{10D23}',
'Right_Joining' =>
'\x{10D22}',
'Left_Joining' =>
'\x{10D00}',
'Transparent' =>
'\x{10D24}-\x{10D27}',
),
Find: Select
'Join_Causing' => '\x{0640}',
'Dual_Joining' => '\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}',
'Right_Joining' => '\x{10AC5}\x{10AC7}\x{10AC9}-\x{10ACA}\x{10ACE}-\x{10AD2}\x{10ADD}\x{10AE1}\x{10AE4}\x{10AEF}',
'Left_Joining' => '\x{10ACD}\x{10AD7}',
'Transparent' => '\x{10AE5}-\x{10AE6}',
Replace With: Select
'Join_Causing' =>
'\x{0640}',
'Dual_Joining' =>
'\x{10AC0}-\x{10AC4}' .
'\x{10AD3}-\x{10AD6}' .
'\x{10AD8}-\x{10ADC}' .
'\x{10ADE}-\x{10AE0}' .
'\x{10AEB}-\x{10AEE}',
'Right_Joining' =>
'\x{10AC5}' .
'\x{10AC7}' .
'\x{10AC9}-\x{10ACA}' .
'\x{10ACE}-\x{10AD2}' .
'\x{10ADD}' .
'\x{10AE1}' .
'\x{10AE4}' .
'\x{10AEF}',
'Left_Joining' =>
'\x{10ACD}' .
'\x{10AD7}',
'Transparent' =>
'\x{10AE5}-\x{10AE6}',
Find: Select
'Join_Causing' => '\x{0640}',
'Dual_Joining' => '\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}',
'Right_Joining' => '\x{10F33}\x{10F54}',
'Transparent' => '\x{10F46}-\x{10F50}',
Replace With: Select
'Join_Causing' =>
'\x{0640}',
'Dual_Joining' =>
'\x{10F30}-\x{10F32}' .
'\x{10F34}-\x{10F44}' .
'\x{10F51}-\x{10F53}',
'Right_Joining' =>
'\x{10F33}' .
'\x{10F54}',
'Transparent' =>
'\x{10F46}-\x{10F50}',
Find: Select
'Join_Causing' => '\x{0640}',
'Dual_Joining' => '\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}',
'Right_Joining' => '\x{0840}\x{0846}-\x{0847}\x{0849}\x{0854}\x{0856}-\x{0858}',
'Transparent' => '\x{0859}-\x{085B}',
Replace With: Select
'Join_Causing' =>
'\x{0640}',
'Dual_Joining' =>
'\x{0841}-\x{0845}' .
'\x{0848}' .
'\x{084A}-\x{0853}' .
'\x{0855}',
'Right_Joining' =>
'\x{0840}' .
'\x{0846}-\x{0847}' .
'\x{0849}' .
'\x{0854}' .
'\x{0856}-\x{0858}',
'Transparent' =>
'\x{0859}-\x{085B}',
Find: Select
'Join_Causing' => '\x{0640}',
'Dual_Joining' => '\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}',
'Right_Joining' => '\x{10B81}\x{10B83}-\x{10B85}\x{10B89}\x{10B8C}\x{10B8E}-\x{10B8F}\x{10B91}\x{10BA9}-\x{10BAC}',
),
'Old_Uyghur' => array(
'Join_Causing' => '\x{0640}',
'Dual_Joining' => '\x{10F70}-\x{10F73}\x{10F76}-\x{10F81}',
'Right_Joining' => '\x{10F74}-\x{10F75}',
'Transparent' => '\x{10F82}-\x{10F85}',
),
Replace With: Select
'Join_Causing' =>
'\x{0640}',
'Dual_Joining' =>
'\x{10B80}' .
'\x{10B82}' .
'\x{10B86}-\x{10B88}' .
'\x{10B8A}-\x{10B8B}' .
'\x{10B8D}' .
'\x{10B90}' .
'\x{10BAD}-\x{10BAE}',
'Right_Joining' =>
'\x{10B81}' .
'\x{10B83}-\x{10B85}' .
'\x{10B89}' .
'\x{10B8C}' .
'\x{10B8E}-\x{10B8F}' .
'\x{10B91}' .
'\x{10BA9}-\x{10BAC}',
),
'Old_Uyghur' => array(
'Join_Causing' =>
'\x{0640}',
'Dual_Joining' =>
'\x{10F70}-\x{10F73}' .
'\x{10F76}-\x{10F81}',
'Right_Joining' =>
'\x{10F74}-\x{10F75}',
'Transparent' =>
'\x{10F82}-\x{10F85}',
),
Find: Select
'Join_Causing' => '\x{180A}',
'Dual_Joining' => '\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}',
'Transparent' => '\x{180B}-\x{180D}\x{180F}\x{1885}-\x{1886}\x{18A9}',
),
'Phags_Pa' => array(
'Dual_Joining' => '\x{A840}-\x{A871}',
'Left_Joining' => '\x{A872}',
),
'Chorasmian' => array(
'Dual_Joining' => '\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}',
'Right_Joining' => '\x{10FB4}-\x{10FB6}\x{10FB9}-\x{10FBA}\x{10FBD}\x{10FC2}-\x{10FC3}\x{10FC9}',
'Left_Joining' => '\x{10FCB}',
),
Replace With: Select
'Join_Causing' =>
'\x{180A}',
'Dual_Joining' =>
'\x{1807}' .
'\x{1820}-\x{1842}' .
'\x{1843}' .
'\x{1844}-\x{1878}' .
'\x{1887}-\x{18A8}' .
'\x{18AA}',
'Transparent' =>
'\x{180B}-\x{180D}' .
'\x{180F}' .
'\x{1885}-\x{1886}' .
'\x{18A9}',
),
'Phags_Pa' => array(
'Dual_Joining' =>
'\x{A840}-\x{A871}',
'Left_Joining' =>
'\x{A872}',
),
'Chorasmian' => array(
'Dual_Joining' =>
'\x{10FB0}' .
'\x{10FB2}-\x{10FB3}' .
'\x{10FB8}' .
'\x{10FBB}-\x{10FBC}' .
'\x{10FBE}-\x{10FBF}' .
'\x{10FC1}' .
'\x{10FC4}' .
'\x{10FCA}',
'Right_Joining' =>
'\x{10FB4}-\x{10FB6}' .
'\x{10FB9}-\x{10FBA}' .
'\x{10FBD}' .
'\x{10FC2}-\x{10FC3}' .
'\x{10FC9}',
'Left_Joining' =>
'\x{10FCB}',
),
Find: Select
'All' => '\x{0900}-\x{0952}\x{0955}-\x{0966}\x{0966}-\x{096A}\x{096A}-\x{096E}\x{096E}-\x{097F}\x{1CD0}-\x{1CD4}\x{1CD6}-\x{1CDC}\x{1CDE}-\x{1CF4}\x{1CF6}\x{1CF8}\x{20F0}\x{A830}\x{A833}\x{A836}\x{A838}-\x{A839}\x{A8E0}-\x{A8F1}\x{A8F1}-\x{A8F3}\x{A8F3}-\x{A8FF}',
'Letter' => '\x{0904}-\x{0939}\x{093D}\x{0950}\x{0958}-\x{0961}\x{0971}-\x{097F}\x{1CE9}-\x{1CEC}\x{1CEE}-\x{1CF3}\x{1CF6}\x{A8F2}-\x{A8F3}\x{A8F3}-\x{A8F7}\x{A8FB}\x{A8FD}-\x{A8FE}',
'Nonspacing_Combining_Mark' => '\x{093C}\x{094D}\x{0951}-\x{0952}\x{1CD0}-\x{1CD2}\x{1CD4}\x{1CD6}-\x{1CDC}\x{1CDE}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}\x{20F0}\x{A8E0}-\x{A8F1}\x{A8F1}',
'Nonspacing_Mark' => '\x{0900}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0952}\x{0955}-\x{0957}\x{0962}-\x{0963}\x{1CD0}-\x{1CD2}\x{1CD4}\x{1CD6}-\x{1CDC}\x{1CDE}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}\x{20F0}\x{A8E0}-\x{A8F1}\x{A8F1}\x{A8FF}',
'Virama' => '\x{094D}',
'Vowel_Dependent' => '\x{093A}\x{093B}\x{093E}-\x{0940}\x{0941}-\x{0948}\x{0949}-\x{094C}\x{094E}-\x{094F}\x{0955}-\x{0957}\x{0962}-\x{0963}\x{A8FF}',
),
'Bengali' => array(
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{0980}-\x{0983}\x{0985}-\x{098C}\x{098F}-\x{0990}\x{0993}-\x{09A8}\x{09AA}-\x{09B0}\x{09B2}\x{09B6}-\x{09B9}\x{09BC}-\x{09C4}\x{09C7}-\x{09C8}\x{09CB}-\x{09CE}\x{09D7}\x{09DC}-\x{09DD}\x{09DF}-\x{09E3}\x{09E6}\x{09E6}-\x{09E9}\x{09E9}-\x{09EC}\x{09EC}-\x{09EF}\x{09EF}-\x{09FE}\x{1CD0}\x{1CD2}\x{1CD5}\x{1CD8}\x{1CE1}\x{1CEA}\x{1CED}\x{1CF2}\x{1CF5}\x{1CF7}\x{A8F1}',
'Letter' => '\x{0980}\x{0985}-\x{098C}\x{098F}-\x{0990}\x{0993}-\x{09A8}\x{09AA}-\x{09B0}\x{09B2}\x{09B6}-\x{09B9}\x{09BD}\x{09CE}\x{09DC}-\x{09DD}\x{09DF}-\x{09E1}\x{09F0}-\x{09F1}\x{09FC}\x{1CEA}\x{1CF2}\x{1CF5}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{09BC}\x{09CD}\x{09FE}\x{1CD0}\x{1CD2}\x{1CD5}\x{1CD8}\x{1CED}\x{A8F1}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{1CD0}\x{1CD2}\x{1CD5}\x{1CD8}\x{1CED}\x{A8F1}',
'Virama' => '\x{09CD}',
'Vowel_Dependent' => '\x{09BE}-\x{09C0}\x{09C1}-\x{09C4}\x{09C7}-\x{09C8}\x{09CB}-\x{09CC}\x{09D7}\x{09E2}-\x{09E3}',
),
'Grantha' => array(
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{0BE6}\x{0BE8}\x{0BEA}\x{0BEC}\x{0BEE}\x{0BF0}\x{0BF2}-\x{0BF3}\x{1CD0}\x{1CD2}-\x{1CD3}\x{1CF2}-\x{1CF4}\x{1CF9}\x{20F0}\x{11300}-\x{11301}\x{11301}-\x{11303}\x{11303}\x{11305}-\x{1130C}\x{1130F}-\x{11310}\x{11313}-\x{11328}\x{1132A}-\x{11330}\x{11332}-\x{11333}\x{11335}-\x{11339}\x{1133B}-\x{11344}\x{11347}-\x{11348}\x{1134B}-\x{1134D}\x{11350}\x{11357}\x{1135D}-\x{11363}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11FD0}\x{11FD3}',
'Letter' => '\x{1CF2}-\x{1CF3}\x{11305}-\x{1130C}\x{1130F}-\x{11310}\x{11313}-\x{11328}\x{1132A}-\x{11330}\x{11332}-\x{11333}\x{11335}-\x{11339}\x{1133D}\x{11350}\x{1135D}-\x{11361}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{1CD0}\x{1CD2}\x{1CF4}\x{1CF9}\x{20F0}\x{1133B}-\x{1133C}\x{11366}-\x{1136C}\x{11370}-\x{11374}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{1CD0}\x{1CD2}\x{1CF4}\x{1CF9}\x{20F0}\x{11300}-\x{11301}\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}',
'Virama' => '\x{1134D}',
'Vowel_Dependent' => '\x{1133E}-\x{1133F}\x{11340}\x{11341}-\x{11344}\x{11347}-\x{11348}\x{1134B}-\x{1134C}\x{11357}\x{11362}-\x{11363}',
),
'Tirhuta' => array(
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{1CF2}\x{A838}-\x{A839}\x{A83D}\x{A83F}-\x{A840}\x{11480}-\x{114C7}\x{114D0}-\x{114D9}',
'Letter' => '\x{1CF2}\x{A840}\x{11480}-\x{114AF}\x{114C4}-\x{114C5}\x{114C7}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{114C2}-\x{114C3}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}',
'Virama' => '\x{114C2}',
'Vowel_Dependent' => '\x{114B0}-\x{114B2}\x{114B3}-\x{114B8}\x{114B9}\x{114BA}\x{114BB}-\x{114BE}',
),
'Nandinagari' => array(
'All' => '\x{0964}-\x{0965}\x{0CE7}\x{0CE9}\x{0CEB}\x{0CED}\x{0CEF}\x{1CE9}\x{1CF2}\x{1CFA}\x{A83A}\x{A83C}\x{119A0}-\x{119A7}\x{119AA}-\x{119D7}\x{119DA}-\x{119E4}',
'Letter' => '\x{1CE9}\x{1CF2}\x{1CFA}\x{119A0}-\x{119A7}\x{119AA}-\x{119D0}\x{119E1}\x{119E3}',
'Nonspacing_Combining_Mark' => '\x{119E0}',
'Nonspacing_Mark' => '\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}',
'Virama' => '\x{119E0}',
'Vowel_Dependent' => '\x{119D1}-\x{119D3}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119DC}-\x{119DD}\x{119E4}',
),
'Takri' => array(
'All' => '\x{0964}-\x{0965}\x{A838}-\x{A839}\x{A83C}\x{A83E}-\x{A83F}\x{11680}-\x{116B9}\x{116C0}-\x{116C9}',
'Letter' => '\x{11680}-\x{116AA}\x{116B8}',
'Nonspacing_Combining_Mark' => '\x{116B7}',
'Nonspacing_Mark' => '\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}',
'Virama' => '\x{116B6}',
'Vowel_Dependent' => '\x{116AD}\x{116AE}-\x{116AF}\x{116B0}-\x{116B5}',
),
'Khojki' => array(
'All' => '\x{0AE7}\x{0AE9}\x{0AEB}\x{0AED}\x{0AEF}\x{A834}\x{A837}-\x{A83A}\x{11200}-\x{11211}\x{11213}-\x{1123E}',
'Letter' => '\x{11200}-\x{11211}\x{11213}-\x{1122B}',
'Nonspacing_Combining_Mark' => '\x{11236}',
'Nonspacing_Mark' => '\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}',
'Virama' => '\x{11235}',
'Vowel_Dependent' => '\x{1122C}-\x{1122E}\x{1122F}-\x{11231}\x{11232}-\x{11233}',
),
'Dogra' => array(
'All' => '\x{0964}-\x{0965}\x{0967}\x{096B}\x{096F}\x{A831}\x{A834}\x{A837}-\x{A839}\x{11800}-\x{1183B}',
'Letter' => '\x{11800}-\x{1182B}',
'Nonspacing_Combining_Mark' => '\x{11839}-\x{1183A}',
'Nonspacing_Mark' => '\x{1182F}-\x{11837}\x{11839}-\x{1183A}',
'Virama' => '\x{11839}',
'Vowel_Dependent' => '\x{1182C}-\x{1182E}\x{1182F}-\x{11836}',
Replace With: Select
'All' =>
'\x{0900}-\x{0952}' .
'\x{0955}-\x{0966}' .
'\x{0966}-\x{096A}' .
'\x{096A}-\x{096E}' .
'\x{096E}-\x{097F}' .
'\x{1CD0}-\x{1CD4}' .
'\x{1CD6}-\x{1CDC}' .
'\x{1CDE}-\x{1CF4}' .
'\x{1CF6}' .
'\x{1CF8}' .
'\x{20F0}' .
'\x{A830}' .
'\x{A833}' .
'\x{A836}' .
'\x{A838}-\x{A839}' .
'\x{A8E0}-\x{A8F1}' .
'\x{A8F1}-\x{A8F3}' .
'\x{A8F3}-\x{A8FF}' .
'\x{11B00}-\x{11B09}',
'Letter' =>
'\x{0904}-\x{0939}' .
'\x{093D}' .
'\x{0950}' .
'\x{0958}-\x{0961}' .
'\x{0971}-\x{097F}' .
'\x{1CE9}-\x{1CEC}' .
'\x{1CEE}-\x{1CF3}' .
'\x{1CF6}' .
'\x{A8F2}-\x{A8F3}' .
'\x{A8F3}-\x{A8F7}' .
'\x{A8FB}' .
'\x{A8FD}-\x{A8FE}',
'Nonspacing_Combining_Mark' =>
'\x{093C}' .
'\x{094D}' .
'\x{0951}-\x{0952}' .
'\x{1CD0}-\x{1CD2}' .
'\x{1CD4}' .
'\x{1CD6}-\x{1CDC}' .
'\x{1CDE}-\x{1CE0}' .
'\x{1CE2}-\x{1CE8}' .
'\x{1CED}' .
'\x{1CF4}' .
'\x{1CF8}' .
'\x{20F0}' .
'\x{A8E0}-\x{A8F1}' .
'\x{A8F1}',
'Nonspacing_Mark' =>
'\x{0900}-\x{0902}' .
'\x{093A}' .
'\x{093C}' .
'\x{0941}-\x{0948}' .
'\x{094D}' .
'\x{0951}-\x{0952}' .
'\x{0955}-\x{0957}' .
'\x{0962}-\x{0963}' .
'\x{1CD0}-\x{1CD2}' .
'\x{1CD4}' .
'\x{1CD6}-\x{1CDC}' .
'\x{1CDE}-\x{1CE0}' .
'\x{1CE2}-\x{1CE8}' .
'\x{1CED}' .
'\x{1CF4}' .
'\x{1CF8}' .
'\x{20F0}' .
'\x{A8E0}-\x{A8F1}' .
'\x{A8F1}' .
'\x{A8FF}',
'Virama' =>
'\x{094D}',
'Vowel_Dependent' =>
'\x{093A}' .
'\x{093B}' .
'\x{093E}-\x{0940}' .
'\x{0941}-\x{0948}' .
'\x{0949}-\x{094C}' .
'\x{094E}-\x{094F}' .
'\x{0955}-\x{0957}' .
'\x{0962}-\x{0963}' .
'\x{A8FF}',
Find: Select
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{0B82}-\x{0B83}\x{0B85}-\x{0B8A}\x{0B8E}-\x{0B90}\x{0B92}-\x{0B95}\x{0B99}-\x{0B9A}\x{0B9C}\x{0B9E}-\x{0B9F}\x{0BA3}-\x{0BA4}\x{0BA8}-\x{0BAA}\x{0BAE}-\x{0BB9}\x{0BBE}-\x{0BC2}\x{0BC6}-\x{0BC8}\x{0BCA}-\x{0BCD}\x{0BD0}\x{0BD7}\x{0BE6}-\x{0BE7}\x{0BE7}-\x{0BE9}\x{0BE9}-\x{0BEB}\x{0BEB}-\x{0BED}\x{0BED}-\x{0BEF}\x{0BEF}-\x{0BF1}\x{0BF1}-\x{0BF3}\x{0BF3}\x{0BF3}-\x{0BFA}\x{1CDA}\x{A8F3}\x{11301}\x{11303}\x{1133C}\x{11FC0}-\x{11FD1}\x{11FD1}-\x{11FD3}\x{11FD3}-\x{11FF1}\x{11FFF}',
'Letter' => '\x{0B83}\x{0B85}-\x{0B8A}\x{0B8E}-\x{0B90}\x{0B92}-\x{0B95}\x{0B99}-\x{0B9A}\x{0B9C}\x{0B9E}-\x{0B9F}\x{0BA3}-\x{0BA4}\x{0BA8}-\x{0BAA}\x{0BAE}-\x{0BB9}\x{0BD0}\x{A8F3}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{0BCD}\x{1CDA}\x{1133C}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{0B82}\x{0BC0}\x{0BCD}\x{1CDA}\x{11301}\x{1133C}',
'Virama' => '\x{0BCD}',
'Vowel_Dependent' => '\x{0BBE}-\x{0BBF}\x{0BC0}\x{0BC1}-\x{0BC2}\x{0BC6}-\x{0BC8}\x{0BCA}-\x{0BCC}\x{0BD7}',
Replace With: Select
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{0B82}-\x{0B83}' .
'\x{0B85}-\x{0B8A}' .
'\x{0B8E}-\x{0B90}' .
'\x{0B92}-\x{0B95}' .
'\x{0B99}-\x{0B9A}' .
'\x{0B9C}' .
'\x{0B9E}-\x{0B9F}' .
'\x{0BA3}-\x{0BA4}' .
'\x{0BA8}-\x{0BAA}' .
'\x{0BAE}-\x{0BB9}' .
'\x{0BBE}-\x{0BC2}' .
'\x{0BC6}-\x{0BC8}' .
'\x{0BCA}-\x{0BCD}' .
'\x{0BD0}' .
'\x{0BD7}' .
'\x{0BE6}-\x{0BE7}' .
'\x{0BE7}-\x{0BE9}' .
'\x{0BE9}-\x{0BEB}' .
'\x{0BEB}-\x{0BED}' .
'\x{0BED}-\x{0BEF}' .
'\x{0BEF}-\x{0BF1}' .
'\x{0BF1}-\x{0BF3}' .
'\x{0BF3}' .
'\x{0BF3}-\x{0BFA}' .
'\x{1CDA}' .
'\x{A8F3}' .
'\x{11301}' .
'\x{11303}' .
'\x{1133C}' .
'\x{11FC0}-\x{11FD1}' .
'\x{11FD1}-\x{11FD3}' .
'\x{11FD3}-\x{11FF1}' .
'\x{11FFF}',
'Letter' =>
'\x{0B83}' .
'\x{0B85}-\x{0B8A}' .
'\x{0B8E}-\x{0B90}' .
'\x{0B92}-\x{0B95}' .
'\x{0B99}-\x{0B9A}' .
'\x{0B9C}' .
'\x{0B9E}-\x{0B9F}' .
'\x{0BA3}-\x{0BA4}' .
'\x{0BA8}-\x{0BAA}' .
'\x{0BAE}-\x{0BB9}' .
'\x{0BD0}' .
'\x{A8F3}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0BCD}' .
'\x{1CDA}' .
'\x{1133C}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0B82}' .
'\x{0BC0}' .
'\x{0BCD}' .
'\x{1CDA}' .
'\x{11301}' .
'\x{1133C}',
'Virama' =>
'\x{0BCD}',
'Vowel_Dependent' =>
'\x{0BBE}-\x{0BBF}' .
'\x{0BC0}' .
'\x{0BC1}-\x{0BC2}' .
'\x{0BC6}-\x{0BC8}' .
'\x{0BCA}-\x{0BCC}' .
'\x{0BD7}',
Find: Select
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{0D00}-\x{0D0C}\x{0D0E}-\x{0D10}\x{0D12}-\x{0D44}\x{0D46}-\x{0D48}\x{0D4A}-\x{0D4F}\x{0D54}-\x{0D63}\x{0D66}-\x{0D7F}\x{1CDA}\x{A838}',
'Letter' => '\x{0D04}-\x{0D0C}\x{0D0E}-\x{0D10}\x{0D12}-\x{0D3A}\x{0D3D}\x{0D4E}\x{0D54}-\x{0D56}\x{0D5F}-\x{0D61}\x{0D7A}-\x{0D7F}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{0D3B}-\x{0D3C}\x{0D4D}\x{1CDA}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{1CDA}',
'Virama' => '\x{0D4D}',
'Vowel_Dependent' => '\x{0D3E}-\x{0D40}\x{0D41}-\x{0D44}\x{0D46}-\x{0D48}\x{0D4A}-\x{0D4C}\x{0D57}\x{0D62}-\x{0D63}',
Replace With: Select
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{0D00}-\x{0D0C}' .
'\x{0D0E}-\x{0D10}' .
'\x{0D12}-\x{0D44}' .
'\x{0D46}-\x{0D48}' .
'\x{0D4A}-\x{0D4F}' .
'\x{0D54}-\x{0D63}' .
'\x{0D66}-\x{0D7F}' .
'\x{1CDA}' .
'\x{A838}',
'Letter' =>
'\x{0D04}-\x{0D0C}' .
'\x{0D0E}-\x{0D10}' .
'\x{0D12}-\x{0D3A}' .
'\x{0D3D}' .
'\x{0D4E}' .
'\x{0D54}-\x{0D56}' .
'\x{0D5F}-\x{0D61}' .
'\x{0D7A}-\x{0D7F}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0D3B}-\x{0D3C}' .
'\x{0D4D}' .
'\x{1CDA}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0D00}-\x{0D01}' .
'\x{0D3B}-\x{0D3C}' .
'\x{0D41}-\x{0D44}' .
'\x{0D4D}' .
'\x{0D62}-\x{0D63}' .
'\x{1CDA}',
'Virama' =>
'\x{0D4D}',
'Vowel_Dependent' =>
'\x{0D3E}-\x{0D40}' .
'\x{0D41}-\x{0D44}' .
'\x{0D46}-\x{0D48}' .
'\x{0D4A}-\x{0D4C}' .
'\x{0D57}' .
'\x{0D62}-\x{0D63}',
),
'Bengali' => array(
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{0980}-\x{0983}' .
'\x{0985}-\x{098C}' .
'\x{098F}-\x{0990}' .
'\x{0993}-\x{09A8}' .
'\x{09AA}-\x{09B0}' .
'\x{09B2}' .
'\x{09B6}-\x{09B9}' .
'\x{09BC}-\x{09C4}' .
'\x{09C7}-\x{09C8}' .
'\x{09CB}-\x{09CE}' .
'\x{09D7}' .
'\x{09DC}-\x{09DD}' .
'\x{09DF}-\x{09E3}' .
'\x{09E6}' .
'\x{09E6}-\x{09E9}' .
'\x{09E9}-\x{09EC}' .
'\x{09EC}-\x{09EF}' .
'\x{09EF}-\x{09FE}' .
'\x{1CD0}' .
'\x{1CD2}' .
'\x{1CD5}' .
'\x{1CD8}' .
'\x{1CE1}' .
'\x{1CEA}' .
'\x{1CED}' .
'\x{1CF2}' .
'\x{1CF5}' .
'\x{1CF7}' .
'\x{A8F1}',
'Letter' =>
'\x{0980}' .
'\x{0985}-\x{098C}' .
'\x{098F}-\x{0990}' .
'\x{0993}-\x{09A8}' .
'\x{09AA}-\x{09B0}' .
'\x{09B2}' .
'\x{09B6}-\x{09B9}' .
'\x{09BD}' .
'\x{09CE}' .
'\x{09DC}-\x{09DD}' .
'\x{09DF}-\x{09E1}' .
'\x{09F0}-\x{09F1}' .
'\x{09FC}' .
'\x{1CEA}' .
'\x{1CF2}' .
'\x{1CF5}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{09BC}' .
'\x{09CD}' .
'\x{09FE}' .
'\x{1CD0}' .
'\x{1CD2}' .
'\x{1CD5}' .
'\x{1CD8}' .
'\x{1CED}' .
'\x{A8F1}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0981}' .
'\x{09BC}' .
'\x{09C1}-\x{09C4}' .
'\x{09CD}' .
'\x{09E2}-\x{09E3}' .
'\x{09FE}' .
'\x{1CD0}' .
'\x{1CD2}' .
'\x{1CD5}' .
'\x{1CD8}' .
'\x{1CED}' .
'\x{A8F1}',
'Virama' =>
'\x{09CD}',
'Vowel_Dependent' =>
'\x{09BE}-\x{09C0}' .
'\x{09C1}-\x{09C4}' .
'\x{09C7}-\x{09C8}' .
'\x{09CB}-\x{09CC}' .
'\x{09D7}' .
'\x{09E2}-\x{09E3}',
Find: Select
'All' => '\x{0964}-\x{0965}\x{0D81}-\x{0D83}\x{0D85}-\x{0D96}\x{0D9A}-\x{0DB1}\x{0DB3}-\x{0DBB}\x{0DBD}\x{0DC0}-\x{0DC6}\x{0DCA}\x{0DCF}-\x{0DD4}\x{0DD6}\x{0DD8}-\x{0DDF}\x{0DE6}-\x{0DEF}\x{0DF2}-\x{0DF4}\x{111E1}-\x{111F4}',
'Letter' => '\x{0D85}-\x{0D96}\x{0D9A}-\x{0DB1}\x{0DB3}-\x{0DBB}\x{0DBD}\x{0DC0}-\x{0DC6}',
'Nonspacing_Combining_Mark' => '\x{0DCA}',
'Nonspacing_Mark' => '\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}',
'Virama' => '\x{0DCA}',
'Vowel_Dependent' => '\x{0DCF}-\x{0DD1}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0DD8}-\x{0DDF}\x{0DF2}-\x{0DF3}',
Replace With: Select
'All' =>
'\x{0964}-\x{0965}' .
'\x{0D81}-\x{0D83}' .
'\x{0D85}-\x{0D96}' .
'\x{0D9A}-\x{0DB1}' .
'\x{0DB3}-\x{0DBB}' .
'\x{0DBD}' .
'\x{0DC0}-\x{0DC6}' .
'\x{0DCA}' .
'\x{0DCF}-\x{0DD4}' .
'\x{0DD6}' .
'\x{0DD8}-\x{0DDF}' .
'\x{0DE6}-\x{0DEF}' .
'\x{0DF2}-\x{0DF4}' .
'\x{111E1}-\x{111F4}',
'Letter' =>
'\x{0D85}-\x{0D96}' .
'\x{0D9A}-\x{0DB1}' .
'\x{0DB3}-\x{0DBB}' .
'\x{0DBD}' .
'\x{0DC0}-\x{0DC6}',
'Nonspacing_Combining_Mark' =>
'\x{0DCA}',
'Nonspacing_Mark' =>
'\x{0D81}' .
'\x{0DCA}' .
'\x{0DD2}-\x{0DD4}' .
'\x{0DD6}',
'Virama' =>
'\x{0DCA}',
'Vowel_Dependent' =>
'\x{0DCF}-\x{0DD1}' .
'\x{0DD2}-\x{0DD4}' .
'\x{0DD6}' .
'\x{0DD8}-\x{0DDF}' .
'\x{0DF2}-\x{0DF3}',
Find: Select
'Telugu' => array(
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{0C00}-\x{0C0C}\x{0C0E}-\x{0C10}\x{0C12}-\x{0C28}\x{0C2A}-\x{0C39}\x{0C3C}-\x{0C44}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C58}-\x{0C5A}\x{0C5D}\x{0C60}-\x{0C63}\x{0C66}-\x{0C6F}\x{0C77}-\x{0C7F}\x{1CDA}\x{1CF2}',
'Letter' => '\x{0C05}-\x{0C0C}\x{0C0E}-\x{0C10}\x{0C12}-\x{0C28}\x{0C2A}-\x{0C39}\x{0C3D}\x{0C58}-\x{0C5A}\x{0C5D}\x{0C60}-\x{0C61}\x{1CF2}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{0C3C}\x{0C4D}\x{0C55}-\x{0C56}\x{1CDA}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{0C00}\x{0C04}\x{0C3C}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{1CDA}',
'Virama' => '\x{0C4D}',
'Vowel_Dependent' => '\x{0C3E}-\x{0C40}\x{0C41}-\x{0C44}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4C}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}',
Replace With: Select
'Grantha' => array(
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{0BE6}' .
'\x{0BE8}' .
'\x{0BEA}' .
'\x{0BEC}' .
'\x{0BEE}' .
'\x{0BF0}' .
'\x{0BF2}-\x{0BF3}' .
'\x{1CD0}' .
'\x{1CD2}-\x{1CD3}' .
'\x{1CF2}-\x{1CF4}' .
'\x{1CF9}' .
'\x{20F0}' .
'\x{11300}-\x{11301}' .
'\x{11301}-\x{11303}' .
'\x{11303}' .
'\x{11305}-\x{1130C}' .
'\x{1130F}-\x{11310}' .
'\x{11313}-\x{11328}' .
'\x{1132A}-\x{11330}' .
'\x{11332}-\x{11333}' .
'\x{11335}-\x{11339}' .
'\x{1133B}-\x{11344}' .
'\x{11347}-\x{11348}' .
'\x{1134B}-\x{1134D}' .
'\x{11350}' .
'\x{11357}' .
'\x{1135D}-\x{11363}' .
'\x{11366}-\x{1136C}' .
'\x{11370}-\x{11374}' .
'\x{11FD0}' .
'\x{11FD3}',
'Letter' =>
'\x{1CF2}-\x{1CF3}' .
'\x{11305}-\x{1130C}' .
'\x{1130F}-\x{11310}' .
'\x{11313}-\x{11328}' .
'\x{1132A}-\x{11330}' .
'\x{11332}-\x{11333}' .
'\x{11335}-\x{11339}' .
'\x{1133D}' .
'\x{11350}' .
'\x{1135D}-\x{11361}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{1CD0}' .
'\x{1CD2}' .
'\x{1CF4}' .
'\x{1CF9}' .
'\x{20F0}' .
'\x{1133B}-\x{1133C}' .
'\x{11366}-\x{1136C}' .
'\x{11370}-\x{11374}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{1CD0}' .
'\x{1CD2}' .
'\x{1CF4}' .
'\x{1CF9}' .
'\x{20F0}' .
'\x{11300}-\x{11301}' .
'\x{11301}' .
'\x{1133B}-\x{1133C}' .
'\x{11340}' .
'\x{11366}-\x{1136C}' .
'\x{11370}-\x{11374}',
'Virama' =>
'\x{1134D}',
'Vowel_Dependent' =>
'\x{1133E}-\x{1133F}' .
'\x{11340}' .
'\x{11341}-\x{11344}' .
'\x{11347}-\x{11348}' .
'\x{1134B}-\x{1134C}' .
'\x{11357}' .
'\x{11362}-\x{11363}',
Find: Select
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{0C80}-\x{0C8C}\x{0C8E}-\x{0C90}\x{0C92}-\x{0CA8}\x{0CAA}-\x{0CB3}\x{0CB5}-\x{0CB9}\x{0CBC}-\x{0CC4}\x{0CC6}-\x{0CC8}\x{0CCA}-\x{0CCD}\x{0CD5}-\x{0CD6}\x{0CDD}-\x{0CDE}\x{0CE0}-\x{0CE3}\x{0CE6}\x{0CE6}-\x{0CE8}\x{0CE8}-\x{0CEA}\x{0CEA}-\x{0CEC}\x{0CEC}-\x{0CEE}\x{0CEE}-\x{0CEF}\x{0CF1}-\x{0CF2}\x{1CD0}\x{1CD2}\x{1CDA}\x{1CF2}\x{1CF4}\x{A835}\x{A838}',
'Letter' => '\x{0C80}\x{0C85}-\x{0C8C}\x{0C8E}-\x{0C90}\x{0C92}-\x{0CA8}\x{0CAA}-\x{0CB3}\x{0CB5}-\x{0CB9}\x{0CBD}\x{0CDD}-\x{0CDE}\x{0CE0}-\x{0CE1}\x{0CF1}-\x{0CF2}\x{1CF2}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{0CBC}\x{0CCD}\x{1CD0}\x{1CD2}\x{1CDA}\x{1CF4}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{1CD0}\x{1CD2}\x{1CDA}\x{1CF4}',
'Virama' => '\x{0CCD}',
'Vowel_Dependent' => '\x{0CBE}\x{0CBF}\x{0CC0}-\x{0CC4}\x{0CC6}\x{0CC7}-\x{0CC8}\x{0CCA}-\x{0CCB}\x{0CCC}\x{0CD5}-\x{0CD6}\x{0CE2}-\x{0CE3}',
Replace With: Select
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{0C80}-\x{0C8C}' .
'\x{0C8E}-\x{0C90}' .
'\x{0C92}-\x{0CA8}' .
'\x{0CAA}-\x{0CB3}' .
'\x{0CB5}-\x{0CB9}' .
'\x{0CBC}-\x{0CC4}' .
'\x{0CC6}-\x{0CC8}' .
'\x{0CCA}-\x{0CCD}' .
'\x{0CD5}-\x{0CD6}' .
'\x{0CDD}-\x{0CDE}' .
'\x{0CE0}-\x{0CE3}' .
'\x{0CE6}' .
'\x{0CE6}-\x{0CE8}' .
'\x{0CE8}-\x{0CEA}' .
'\x{0CEA}-\x{0CEC}' .
'\x{0CEC}-\x{0CEE}' .
'\x{0CEE}-\x{0CEF}' .
'\x{0CF1}-\x{0CF3}' .
'\x{1CD0}' .
'\x{1CD2}' .
'\x{1CDA}' .
'\x{1CF2}' .
'\x{1CF4}' .
'\x{A835}' .
'\x{A838}',
'Letter' =>
'\x{0C80}' .
'\x{0C85}-\x{0C8C}' .
'\x{0C8E}-\x{0C90}' .
'\x{0C92}-\x{0CA8}' .
'\x{0CAA}-\x{0CB3}' .
'\x{0CB5}-\x{0CB9}' .
'\x{0CBD}' .
'\x{0CDD}-\x{0CDE}' .
'\x{0CE0}-\x{0CE1}' .
'\x{0CF1}-\x{0CF2}' .
'\x{1CF2}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0CBC}' .
'\x{0CCD}' .
'\x{1CD0}' .
'\x{1CD2}' .
'\x{1CDA}' .
'\x{1CF4}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0C81}' .
'\x{0CBC}' .
'\x{0CBF}' .
'\x{0CC6}' .
'\x{0CCC}-\x{0CCD}' .
'\x{0CE2}-\x{0CE3}' .
'\x{1CD0}' .
'\x{1CD2}' .
'\x{1CDA}' .
'\x{1CF4}',
'Virama' =>
'\x{0CCD}',
'Vowel_Dependent' =>
'\x{0CBE}' .
'\x{0CBF}' .
'\x{0CC0}-\x{0CC4}' .
'\x{0CC6}' .
'\x{0CC7}-\x{0CC8}' .
'\x{0CCA}-\x{0CCB}' .
'\x{0CCC}' .
'\x{0CD5}-\x{0CD6}' .
'\x{0CE2}-\x{0CE3}',
),
'Telugu' => array(
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{0C00}-\x{0C0C}' .
'\x{0C0E}-\x{0C10}' .
'\x{0C12}-\x{0C28}' .
'\x{0C2A}-\x{0C39}' .
'\x{0C3C}-\x{0C44}' .
'\x{0C46}-\x{0C48}' .
'\x{0C4A}-\x{0C4D}' .
'\x{0C55}-\x{0C56}' .
'\x{0C58}-\x{0C5A}' .
'\x{0C5D}' .
'\x{0C60}-\x{0C63}' .
'\x{0C66}-\x{0C6F}' .
'\x{0C77}-\x{0C7F}' .
'\x{1CDA}' .
'\x{1CF2}',
'Letter' =>
'\x{0C05}-\x{0C0C}' .
'\x{0C0E}-\x{0C10}' .
'\x{0C12}-\x{0C28}' .
'\x{0C2A}-\x{0C39}' .
'\x{0C3D}' .
'\x{0C58}-\x{0C5A}' .
'\x{0C5D}' .
'\x{0C60}-\x{0C61}' .
'\x{1CF2}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0C3C}' .
'\x{0C4D}' .
'\x{0C55}-\x{0C56}' .
'\x{1CDA}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0C00}' .
'\x{0C04}' .
'\x{0C3C}' .
'\x{0C3E}-\x{0C40}' .
'\x{0C46}-\x{0C48}' .
'\x{0C4A}-\x{0C4D}' .
'\x{0C55}-\x{0C56}' .
'\x{0C62}-\x{0C63}' .
'\x{1CDA}',
'Virama' =>
'\x{0C4D}',
'Vowel_Dependent' =>
'\x{0C3E}-\x{0C40}' .
'\x{0C41}-\x{0C44}' .
'\x{0C46}-\x{0C48}' .
'\x{0C4A}-\x{0C4C}' .
'\x{0C55}-\x{0C56}' .
'\x{0C62}-\x{0C63}',
Find: Select
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{0A81}-\x{0A83}\x{0A85}-\x{0A8D}\x{0A8F}-\x{0A91}\x{0A93}-\x{0AA8}\x{0AAA}-\x{0AB0}\x{0AB2}-\x{0AB3}\x{0AB5}-\x{0AB9}\x{0ABC}-\x{0AC5}\x{0AC7}-\x{0AC9}\x{0ACB}-\x{0ACD}\x{0AD0}\x{0AE0}-\x{0AE3}\x{0AE6}\x{0AE6}-\x{0AE8}\x{0AE8}-\x{0AEA}\x{0AEA}-\x{0AEC}\x{0AEC}-\x{0AEE}\x{0AEE}-\x{0AF1}\x{0AF9}-\x{0AFF}\x{A832}\x{A835}\x{A838}\x{A838}-\x{A839}',
'Letter' => '\x{0A85}-\x{0A8D}\x{0A8F}-\x{0A91}\x{0A93}-\x{0AA8}\x{0AAA}-\x{0AB0}\x{0AB2}-\x{0AB3}\x{0AB5}-\x{0AB9}\x{0ABD}\x{0AD0}\x{0AE0}-\x{0AE1}\x{0AF9}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{0ABC}\x{0ACD}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}',
'Virama' => '\x{0ACD}',
'Vowel_Dependent' => '\x{0ABE}-\x{0AC0}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0AC9}\x{0ACB}-\x{0ACC}\x{0AE2}-\x{0AE3}',
Replace With: Select
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{0A81}-\x{0A83}' .
'\x{0A85}-\x{0A8D}' .
'\x{0A8F}-\x{0A91}' .
'\x{0A93}-\x{0AA8}' .
'\x{0AAA}-\x{0AB0}' .
'\x{0AB2}-\x{0AB3}' .
'\x{0AB5}-\x{0AB9}' .
'\x{0ABC}-\x{0AC5}' .
'\x{0AC7}-\x{0AC9}' .
'\x{0ACB}-\x{0ACD}' .
'\x{0AD0}' .
'\x{0AE0}-\x{0AE3}' .
'\x{0AE6}' .
'\x{0AE6}-\x{0AE8}' .
'\x{0AE8}-\x{0AEA}' .
'\x{0AEA}-\x{0AEC}' .
'\x{0AEC}-\x{0AEE}' .
'\x{0AEE}-\x{0AF1}' .
'\x{0AF9}-\x{0AFF}' .
'\x{A832}' .
'\x{A835}' .
'\x{A838}' .
'\x{A838}-\x{A839}',
'Letter' =>
'\x{0A85}-\x{0A8D}' .
'\x{0A8F}-\x{0A91}' .
'\x{0A93}-\x{0AA8}' .
'\x{0AAA}-\x{0AB0}' .
'\x{0AB2}-\x{0AB3}' .
'\x{0AB5}-\x{0AB9}' .
'\x{0ABD}' .
'\x{0AD0}' .
'\x{0AE0}-\x{0AE1}' .
'\x{0AF9}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0ABC}' .
'\x{0ACD}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0A81}-\x{0A82}' .
'\x{0ABC}' .
'\x{0AC1}-\x{0AC5}' .
'\x{0AC7}-\x{0AC8}' .
'\x{0ACD}' .
'\x{0AE2}-\x{0AE3}' .
'\x{0AFA}-\x{0AFF}',
'Virama' =>
'\x{0ACD}',
'Vowel_Dependent' =>
'\x{0ABE}-\x{0AC0}' .
'\x{0AC1}-\x{0AC5}' .
'\x{0AC7}-\x{0AC8}' .
'\x{0AC9}' .
'\x{0ACB}-\x{0ACC}' .
'\x{0AE2}-\x{0AE3}',
Find: Select
'All' => '\x{0951}\x{1CD7}\x{1CD9}\x{1CDD}\x{1CE0}\x{11180}-\x{111DF}',
'Letter' => '\x{11183}-\x{111B2}\x{111C1}-\x{111C4}\x{111DA}\x{111DC}',
'Nonspacing_Combining_Mark' => '\x{0951}\x{1CD7}\x{1CD9}\x{1CDD}\x{1CE0}\x{111CA}',
'Nonspacing_Mark' => '\x{0951}\x{1CD7}\x{1CD9}\x{1CDD}\x{1CE0}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}',
'Virama' => '\x{111C0}',
'Vowel_Dependent' => '\x{111B3}-\x{111B5}\x{111B6}-\x{111BE}\x{111BF}\x{111CB}-\x{111CC}\x{111CE}',
Replace With: Select
'All' =>
'\x{0951}' .
'\x{1CD7}' .
'\x{1CD9}' .
'\x{1CDD}' .
'\x{1CE0}' .
'\x{11180}-\x{111DF}',
'Letter' =>
'\x{11183}-\x{111B2}' .
'\x{111C1}-\x{111C4}' .
'\x{111DA}' .
'\x{111DC}',
'Nonspacing_Combining_Mark' =>
'\x{0951}' .
'\x{1CD7}' .
'\x{1CD9}' .
'\x{1CDD}' .
'\x{1CE0}' .
'\x{111CA}',
'Nonspacing_Mark' =>
'\x{0951}' .
'\x{1CD7}' .
'\x{1CD9}' .
'\x{1CDD}' .
'\x{1CE0}' .
'\x{11180}-\x{11181}' .
'\x{111B6}-\x{111BE}' .
'\x{111C9}-\x{111CC}' .
'\x{111CF}',
'Virama' =>
'\x{111C0}',
'Vowel_Dependent' =>
'\x{111B3}-\x{111B5}' .
'\x{111B6}-\x{111BE}' .
'\x{111BF}' .
'\x{111CB}-\x{111CC}' .
'\x{111CE}',
Find: Select
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{0B01}-\x{0B03}\x{0B05}-\x{0B0C}\x{0B0F}-\x{0B10}\x{0B13}-\x{0B28}\x{0B2A}-\x{0B30}\x{0B32}-\x{0B33}\x{0B35}-\x{0B39}\x{0B3C}-\x{0B44}\x{0B47}-\x{0B48}\x{0B4B}-\x{0B4D}\x{0B55}-\x{0B57}\x{0B5C}-\x{0B5D}\x{0B5F}-\x{0B63}\x{0B66}-\x{0B77}\x{1CDA}\x{1CF2}',
'Letter' => '\x{0B05}-\x{0B0C}\x{0B0F}-\x{0B10}\x{0B13}-\x{0B28}\x{0B2A}-\x{0B30}\x{0B32}-\x{0B33}\x{0B35}-\x{0B39}\x{0B3D}\x{0B5C}-\x{0B5D}\x{0B5F}-\x{0B61}\x{0B71}\x{1CF2}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{0B3C}\x{0B4D}\x{1CDA}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{1CDA}',
'Virama' => '\x{0B4D}',
'Vowel_Dependent' => '\x{0B3E}\x{0B3F}\x{0B40}\x{0B41}-\x{0B44}\x{0B47}-\x{0B48}\x{0B4B}-\x{0B4C}\x{0B55}-\x{0B56}\x{0B57}\x{0B62}-\x{0B63}',
Replace With: Select
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{0B01}-\x{0B03}' .
'\x{0B05}-\x{0B0C}' .
'\x{0B0F}-\x{0B10}' .
'\x{0B13}-\x{0B28}' .
'\x{0B2A}-\x{0B30}' .
'\x{0B32}-\x{0B33}' .
'\x{0B35}-\x{0B39}' .
'\x{0B3C}-\x{0B44}' .
'\x{0B47}-\x{0B48}' .
'\x{0B4B}-\x{0B4D}' .
'\x{0B55}-\x{0B57}' .
'\x{0B5C}-\x{0B5D}' .
'\x{0B5F}-\x{0B63}' .
'\x{0B66}-\x{0B77}' .
'\x{1CDA}' .
'\x{1CF2}',
'Letter' =>
'\x{0B05}-\x{0B0C}' .
'\x{0B0F}-\x{0B10}' .
'\x{0B13}-\x{0B28}' .
'\x{0B2A}-\x{0B30}' .
'\x{0B32}-\x{0B33}' .
'\x{0B35}-\x{0B39}' .
'\x{0B3D}' .
'\x{0B5C}-\x{0B5D}' .
'\x{0B5F}-\x{0B61}' .
'\x{0B71}' .
'\x{1CF2}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0B3C}' .
'\x{0B4D}' .
'\x{1CDA}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0B01}' .
'\x{0B3C}' .
'\x{0B3F}' .
'\x{0B41}-\x{0B44}' .
'\x{0B4D}' .
'\x{0B55}-\x{0B56}' .
'\x{0B62}-\x{0B63}' .
'\x{1CDA}',
'Virama' =>
'\x{0B4D}',
'Vowel_Dependent' =>
'\x{0B3E}' .
'\x{0B3F}' .
'\x{0B40}' .
'\x{0B41}-\x{0B44}' .
'\x{0B47}-\x{0B48}' .
'\x{0B4B}-\x{0B4C}' .
'\x{0B55}-\x{0B56}' .
'\x{0B57}' .
'\x{0B62}-\x{0B63}',
Find: Select
'All' => '\x{0951}-\x{0952}\x{0964}-\x{0965}\x{0A01}-\x{0A03}\x{0A05}-\x{0A0A}\x{0A0F}-\x{0A10}\x{0A13}-\x{0A28}\x{0A2A}-\x{0A30}\x{0A32}-\x{0A33}\x{0A35}-\x{0A36}\x{0A38}-\x{0A39}\x{0A3C}\x{0A3E}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A59}-\x{0A5C}\x{0A5E}\x{0A66}\x{0A66}-\x{0A68}\x{0A68}-\x{0A6A}\x{0A6A}-\x{0A6C}\x{0A6C}-\x{0A6E}\x{0A6E}-\x{0A76}\x{A833}\x{A836}\x{A838}-\x{A839}\x{A839}',
'Letter' => '\x{0A05}-\x{0A0A}\x{0A0F}-\x{0A10}\x{0A13}-\x{0A28}\x{0A2A}-\x{0A30}\x{0A32}-\x{0A33}\x{0A35}-\x{0A36}\x{0A38}-\x{0A39}\x{0A59}-\x{0A5C}\x{0A5E}\x{0A72}-\x{0A74}',
'Nonspacing_Combining_Mark' => '\x{0951}-\x{0952}\x{0A3C}\x{0A4D}',
'Nonspacing_Mark' => '\x{0951}-\x{0952}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}',
'Virama' => '\x{0A4D}',
'Vowel_Dependent' => '\x{0A3E}-\x{0A40}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4C}',
Replace With: Select
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{0A01}-\x{0A03}' .
'\x{0A05}-\x{0A0A}' .
'\x{0A0F}-\x{0A10}' .
'\x{0A13}-\x{0A28}' .
'\x{0A2A}-\x{0A30}' .
'\x{0A32}-\x{0A33}' .
'\x{0A35}-\x{0A36}' .
'\x{0A38}-\x{0A39}' .
'\x{0A3C}' .
'\x{0A3E}-\x{0A42}' .
'\x{0A47}-\x{0A48}' .
'\x{0A4B}-\x{0A4D}' .
'\x{0A51}' .
'\x{0A59}-\x{0A5C}' .
'\x{0A5E}' .
'\x{0A66}' .
'\x{0A66}-\x{0A68}' .
'\x{0A68}-\x{0A6A}' .
'\x{0A6A}-\x{0A6C}' .
'\x{0A6C}-\x{0A6E}' .
'\x{0A6E}-\x{0A76}' .
'\x{A833}' .
'\x{A836}' .
'\x{A838}-\x{A839}' .
'\x{A839}',
'Letter' =>
'\x{0A05}-\x{0A0A}' .
'\x{0A0F}-\x{0A10}' .
'\x{0A13}-\x{0A28}' .
'\x{0A2A}-\x{0A30}' .
'\x{0A32}-\x{0A33}' .
'\x{0A35}-\x{0A36}' .
'\x{0A38}-\x{0A39}' .
'\x{0A59}-\x{0A5C}' .
'\x{0A5E}' .
'\x{0A72}-\x{0A74}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0A3C}' .
'\x{0A4D}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{0A01}-\x{0A02}' .
'\x{0A3C}' .
'\x{0A41}-\x{0A42}' .
'\x{0A47}-\x{0A48}' .
'\x{0A4B}-\x{0A4D}' .
'\x{0A51}' .
'\x{0A70}-\x{0A71}' .
'\x{0A75}',
'Virama' =>
'\x{0A4D}',
'Vowel_Dependent' =>
'\x{0A3E}-\x{0A40}' .
'\x{0A41}-\x{0A42}' .
'\x{0A47}-\x{0A48}' .
'\x{0A4B}-\x{0A4C}',
),
'Tirhuta' => array(
'All' =>
'\x{0951}-\x{0952}' .
'\x{0964}-\x{0965}' .
'\x{1CF2}' .
'\x{A838}-\x{A839}' .
'\x{A83D}' .
'\x{A83F}-\x{A840}' .
'\x{11480}-\x{114C7}' .
'\x{114D0}-\x{114D9}',
'Letter' =>
'\x{1CF2}' .
'\x{A840}' .
'\x{11480}-\x{114AF}' .
'\x{114C4}-\x{114C5}' .
'\x{114C7}',
'Nonspacing_Combining_Mark' =>
'\x{0951}-\x{0952}' .
'\x{114C2}-\x{114C3}',
'Nonspacing_Mark' =>
'\x{0951}-\x{0952}' .
'\x{114B3}-\x{114B8}' .
'\x{114BA}' .
'\x{114BF}-\x{114C0}' .
'\x{114C2}-\x{114C3}',
'Virama' =>
'\x{114C2}',
'Vowel_Dependent' =>
'\x{114B0}-\x{114B2}' .
'\x{114B3}-\x{114B8}' .
'\x{114B9}' .
'\x{114BA}' .
'\x{114BB}-\x{114BE}',
Find: Select
'All' => '\x{0968}\x{096C}\x{0970}\x{A836}\x{A838}-\x{A839}\x{A839}\x{A83B}\x{11080}-\x{110C2}\x{110CD}',
'Letter' => '\x{11083}-\x{110AF}',
'Nonspacing_Combining_Mark' => '\x{110B9}-\x{110BA}',
'Nonspacing_Mark' => '\x{11080}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{110C2}',
'Virama' => '\x{110B9}',
'Vowel_Dependent' => '\x{110B0}-\x{110B2}\x{110B3}-\x{110B6}\x{110B7}-\x{110B8}\x{110C2}',
Replace With: Select
'All' =>
'\x{0968}' .
'\x{096C}' .
'\x{0970}' .
'\x{A836}' .
'\x{A838}-\x{A839}' .
'\x{A839}' .
'\x{A83B}' .
'\x{11080}-\x{110C2}' .
'\x{110CD}',
'Letter' =>
'\x{11083}-\x{110AF}',
'Nonspacing_Combining_Mark' =>
'\x{110B9}-\x{110BA}',
'Nonspacing_Mark' =>
'\x{11080}-\x{11081}' .
'\x{110B3}-\x{110B6}' .
'\x{110B9}-\x{110BA}' .
'\x{110C2}',
'Virama' =>
'\x{110B9}',
'Vowel_Dependent' =>
'\x{110B0}-\x{110B2}' .
'\x{110B3}-\x{110B6}' .
'\x{110B7}-\x{110B8}' .
'\x{110C2}',
Find: Select
'Syloti_Nagri' => array(
'All' => '\x{0964}-\x{0965}\x{09E8}\x{09EB}\x{09EE}\x{09F1}\x{A800}-\x{A82C}',
'Letter' => '\x{09F1}\x{A800}-\x{A801}\x{A803}-\x{A805}\x{A807}-\x{A80A}\x{A80C}-\x{A822}',
'Nonspacing_Combining_Mark' => '\x{A806}\x{A82C}',
'Nonspacing_Mark' => '\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}',
'Virama' => '\x{A806}',
'Vowel_Dependent' => '\x{A802}\x{A823}-\x{A824}\x{A825}-\x{A826}\x{A827}',
Replace With: Select
'Nandinagari' => array(
'All' =>
'\x{0964}-\x{0965}' .
'\x{0CE7}' .
'\x{0CE9}' .
'\x{0CEB}' .
'\x{0CED}' .
'\x{0CEF}' .
'\x{1CE9}' .
'\x{1CF2}' .
'\x{1CFA}' .
'\x{A83A}' .
'\x{A83C}' .
'\x{119A0}-\x{119A7}' .
'\x{119AA}-\x{119D7}' .
'\x{119DA}-\x{119E4}',
'Letter' =>
'\x{1CE9}' .
'\x{1CF2}' .
'\x{1CFA}' .
'\x{119A0}-\x{119A7}' .
'\x{119AA}-\x{119D0}' .
'\x{119E1}' .
'\x{119E3}',
'Nonspacing_Combining_Mark' =>
'\x{119E0}',
'Nonspacing_Mark' =>
'\x{119D4}-\x{119D7}' .
'\x{119DA}-\x{119DB}' .
'\x{119E0}',
'Virama' =>
'\x{119E0}',
'Vowel_Dependent' =>
'\x{119D1}-\x{119D3}' .
'\x{119D4}-\x{119D7}' .
'\x{119DA}-\x{119DB}' .
'\x{119DC}-\x{119DD}' .
'\x{119E4}',
Find: Select
'Brahmi' => array(
'All' => '\x{11000}-\x{1104D}\x{11052}-\x{11075}\x{1107F}',
'Letter' => '\x{11003}-\x{11037}\x{11071}-\x{11072}\x{11075}',
'Nonspacing_Combining_Mark' => '\x{11046}\x{11070}\x{1107F}',
'Nonspacing_Mark' => '\x{11001}\x{11038}-\x{11046}\x{11070}\x{11073}-\x{11074}\x{1107F}',
'Virama' => '\x{11046}',
'Vowel_Dependent' => '\x{11038}-\x{11045}\x{11073}-\x{11074}',
Replace With: Select
'Khojki' => array(
'All' =>
'\x{0AE7}' .
'\x{0AE9}' .
'\x{0AEB}' .
'\x{0AED}' .
'\x{0AEF}' .
'\x{A834}' .
'\x{A837}-\x{A83A}' .
'\x{11200}-\x{11211}' .
'\x{11213}-\x{11241}',
'Letter' =>
'\x{11200}-\x{11211}' .
'\x{11213}-\x{1122B}' .
'\x{1123F}-\x{11240}',
'Nonspacing_Combining_Mark' =>
'\x{11236}',
'Nonspacing_Mark' =>
'\x{1122F}-\x{11231}' .
'\x{11234}' .
'\x{11236}-\x{11237}' .
'\x{1123E}' .
'\x{11241}',
'Virama' =>
'\x{11235}',
'Vowel_Dependent' =>
'\x{1122C}-\x{1122E}' .
'\x{1122F}-\x{11231}' .
'\x{11232}-\x{11233}' .
'\x{11241}',
Find: Select
'Javanese' => array(
'All' => '\x{A980}-\x{A9CD}\x{A9CF}-\x{A9D9}\x{A9DE}-\x{A9DF}',
'Letter' => '\x{A984}-\x{A9B2}\x{A9CF}',
'Nonspacing_Combining_Mark' => '\x{A9B3}',
'Nonspacing_Mark' => '\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}',
'Virama' => '\x{A9C0}',
'Vowel_Dependent' => '\x{A9B4}-\x{A9B5}\x{A9B6}-\x{A9B9}\x{A9BA}-\x{A9BB}\x{A9BC}',
Replace With: Select
'Takri' => array(
'All' =>
'\x{0964}-\x{0965}' .
'\x{A838}-\x{A839}' .
'\x{A83C}' .
'\x{A83E}-\x{A83F}' .
'\x{11680}-\x{116B9}' .
'\x{116C0}-\x{116C9}',
'Letter' =>
'\x{11680}-\x{116AA}' .
'\x{116B8}',
'Nonspacing_Combining_Mark' =>
'\x{116B7}',
'Nonspacing_Mark' =>
'\x{116AB}' .
'\x{116AD}' .
'\x{116B0}-\x{116B5}' .
'\x{116B7}',
'Virama' =>
'\x{116B6}',
'Vowel_Dependent' =>
'\x{116AD}' .
'\x{116AE}-\x{116AF}' .
'\x{116B0}-\x{116B5}',
Find: Select
'Modi' => array(
'All' => '\x{A838}-\x{A839}\x{A839}\x{A83B}\x{A83D}\x{11600}-\x{11644}\x{11650}-\x{11659}',
'Letter' => '\x{11600}-\x{1162F}\x{11644}',
'Nonspacing_Combining_Mark' => '\x{1163F}',
'Nonspacing_Mark' => '\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}',
'Virama' => '\x{1163F}',
'Vowel_Dependent' => '\x{11630}-\x{11632}\x{11633}-\x{1163A}\x{1163B}-\x{1163C}\x{11640}',
Replace With: Select
'Dogra' => array(
'All' =>
'\x{0964}-\x{0965}' .
'\x{0967}' .
'\x{096B}' .
'\x{096F}' .
'\x{A831}' .
'\x{A834}' .
'\x{A837}-\x{A839}' .
'\x{11800}-\x{1183B}',
'Letter' =>
'\x{11800}-\x{1182B}',
'Nonspacing_Combining_Mark' =>
'\x{11839}-\x{1183A}',
'Nonspacing_Mark' =>
'\x{1182F}-\x{11837}' .
'\x{11839}-\x{1183A}',
'Virama' =>
'\x{11839}',
'Vowel_Dependent' =>
'\x{1182C}-\x{1182E}' .
'\x{1182F}-\x{11836}',
Find: Select
'Saurashtra' => array(
'All' => '\x{A880}-\x{A8C5}\x{A8CE}-\x{A8D9}',
'Letter' => '\x{A882}-\x{A8B3}',
'Nonspacing_Combining_Mark' => '\x{A8C4}',
'Nonspacing_Mark' => '\x{A8C4}-\x{A8C5}',
'Virama' => '\x{A8C4}',
'Vowel_Dependent' => '\x{A8B5}-\x{A8C3}',
Replace With: Select
'Syloti_Nagri' => array(
'All' =>
'\x{0964}-\x{0965}' .
'\x{09E8}' .
'\x{09EB}' .
'\x{09EE}' .
'\x{09F1}' .
'\x{A800}-\x{A82C}',
'Letter' =>
'\x{09F1}' .
'\x{A800}-\x{A801}' .
'\x{A803}-\x{A805}' .
'\x{A807}-\x{A80A}' .
'\x{A80C}-\x{A822}',
'Nonspacing_Combining_Mark' =>
'\x{A806}' .
'\x{A82C}',
'Nonspacing_Mark' =>
'\x{A802}' .
'\x{A806}' .
'\x{A80B}' .
'\x{A825}-\x{A826}' .
'\x{A82C}',
'Virama' =>
'\x{A806}',
'Vowel_Dependent' =>
'\x{A802}' .
'\x{A823}-\x{A824}' .
'\x{A825}-\x{A826}' .
'\x{A827}',
Find: Select
'All' => '\x{1B00}-\x{1B4C}\x{1B50}-\x{1B7E}',
'Letter' => '\x{1B05}-\x{1B33}\x{1B45}-\x{1B4C}',
'Nonspacing_Combining_Mark' => '\x{1B34}\x{1B6B}-\x{1B73}',
'Nonspacing_Mark' => '\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}',
'Virama' => '\x{1B44}',
'Vowel_Dependent' => '\x{1B35}\x{1B36}-\x{1B3A}\x{1B3B}\x{1B3C}\x{1B3D}-\x{1B41}\x{1B42}\x{1B43}',
Replace With: Select
'All' =>
'\x{1B00}-\x{1B4C}' .
'\x{1B50}-\x{1B7E}',
'Letter' =>
'\x{1B05}-\x{1B33}' .
'\x{1B45}-\x{1B4C}',
'Nonspacing_Combining_Mark' =>
'\x{1B34}' .
'\x{1B6B}-\x{1B73}',
'Nonspacing_Mark' =>
'\x{1B00}-\x{1B03}' .
'\x{1B34}' .
'\x{1B36}-\x{1B3A}' .
'\x{1B3C}' .
'\x{1B42}' .
'\x{1B6B}-\x{1B73}',
'Virama' =>
'\x{1B44}',
'Vowel_Dependent' =>
'\x{1B35}' .
'\x{1B36}-\x{1B3A}' .
'\x{1B3B}' .
'\x{1B3C}' .
'\x{1B3D}-\x{1B41}' .
'\x{1B42}' .
'\x{1B43}',
),
'Saurashtra' => array(
'All' =>
'\x{A880}-\x{A8C5}' .
'\x{A8CE}-\x{A8D9}',
'Letter' =>
'\x{A882}-\x{A8B3}',
'Nonspacing_Combining_Mark' =>
'\x{A8C4}',
'Nonspacing_Mark' =>
'\x{A8C4}-\x{A8C5}',
'Virama' =>
'\x{A8C4}',
'Vowel_Dependent' =>
'\x{A8B5}-\x{A8C3}',
),
'Javanese' => array(
'All' =>
'\x{A980}-\x{A9CD}' .
'\x{A9CF}-\x{A9D9}' .
'\x{A9DE}-\x{A9DF}',
'Letter' =>
'\x{A984}-\x{A9B2}' .
'\x{A9CF}',
'Nonspacing_Combining_Mark' =>
'\x{A9B3}',
'Nonspacing_Mark' =>
'\x{A980}-\x{A982}' .
'\x{A9B3}' .
'\x{A9B6}-\x{A9B9}' .
'\x{A9BC}-\x{A9BD}',
'Virama' =>
'\x{A9C0}',
'Vowel_Dependent' =>
'\x{A9B4}-\x{A9B5}' .
'\x{A9B6}-\x{A9B9}' .
'\x{A9BA}-\x{A9BB}' .
'\x{A9BC}',
),
'Brahmi' => array(
'All' =>
'\x{11000}-\x{1104D}' .
'\x{11052}-\x{11075}' .
'\x{1107F}',
'Letter' =>
'\x{11003}-\x{11037}' .
'\x{11071}-\x{11072}' .
'\x{11075}',
'Nonspacing_Combining_Mark' =>
'\x{11046}' .
'\x{11070}' .
'\x{1107F}',
'Nonspacing_Mark' =>
'\x{11001}' .
'\x{11038}-\x{11046}' .
'\x{11070}' .
'\x{11073}-\x{11074}' .
'\x{1107F}',
'Virama' =>
'\x{11046}',
'Vowel_Dependent' =>
'\x{11038}-\x{11045}' .
'\x{11073}-\x{11074}',
),
'Modi' => array(
'All' =>
'\x{A838}-\x{A839}' .
'\x{A839}' .
'\x{A83B}' .
'\x{A83D}' .
'\x{11600}-\x{11644}' .
'\x{11650}-\x{11659}',
'Letter' =>
'\x{11600}-\x{1162F}' .
'\x{11644}',
'Nonspacing_Combining_Mark' =>
'\x{1163F}',
'Nonspacing_Mark' =>
'\x{11633}-\x{1163A}' .
'\x{1163D}' .
'\x{1163F}-\x{11640}',
'Virama' =>
'\x{1163F}',
'Vowel_Dependent' =>
'\x{11630}-\x{11632}' .
'\x{11633}-\x{1163A}' .
'\x{1163B}-\x{1163C}' .
'\x{11640}',
Find: Select
'All' => '\x{11580}-\x{115B5}\x{115B8}-\x{115DD}',
'Letter' => '\x{11580}-\x{115AE}\x{115D8}-\x{115DB}',
'Nonspacing_Combining_Mark' => '\x{115BF}-\x{115C0}',
'Nonspacing_Mark' => '\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}',
'Virama' => '\x{115BF}',
'Vowel_Dependent' => '\x{115AF}-\x{115B1}\x{115B2}-\x{115B5}\x{115B8}-\x{115BB}\x{115DC}-\x{115DD}',
Replace With: Select
'All' =>
'\x{11580}-\x{115B5}' .
'\x{115B8}-\x{115DD}',
'Letter' =>
'\x{11580}-\x{115AE}' .
'\x{115D8}-\x{115DB}',
'Nonspacing_Combining_Mark' =>
'\x{115BF}-\x{115C0}',
'Nonspacing_Mark' =>
'\x{115B2}-\x{115B5}' .
'\x{115BC}-\x{115BD}' .
'\x{115BF}-\x{115C0}' .
'\x{115DC}-\x{115DD}',
'Virama' =>
'\x{115BF}',
'Vowel_Dependent' =>
'\x{115AF}-\x{115B1}' .
'\x{115B2}-\x{115B5}' .
'\x{115B8}-\x{115BB}' .
'\x{115DC}-\x{115DD}',
Find: Select
'All' => '\x{11400}-\x{1145B}\x{1145D}-\x{11461}',
'Letter' => '\x{11400}-\x{11434}\x{11447}-\x{1144A}\x{1145F}-\x{11461}',
'Nonspacing_Combining_Mark' => '\x{11442}\x{11446}\x{1145E}',
'Nonspacing_Mark' => '\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}',
'Virama' => '\x{11442}',
'Vowel_Dependent' => '\x{11435}-\x{11437}\x{11438}-\x{1143F}\x{11440}-\x{11441}',
Replace With: Select
'All' =>
'\x{11400}-\x{1145B}' .
'\x{1145D}-\x{11461}',
'Letter' =>
'\x{11400}-\x{11434}' .
'\x{11447}-\x{1144A}' .
'\x{1145F}-\x{11461}',
'Nonspacing_Combining_Mark' =>
'\x{11442}' .
'\x{11446}' .
'\x{1145E}',
'Nonspacing_Mark' =>
'\x{11438}-\x{1143F}' .
'\x{11442}-\x{11444}' .
'\x{11446}' .
'\x{1145E}',
'Virama' =>
'\x{11442}',
'Vowel_Dependent' =>
'\x{11435}-\x{11437}' .
'\x{11438}-\x{1143F}' .
'\x{11440}-\x{11441}',
Find: Select
'All' => '\x{11C00}-\x{11C08}\x{11C0A}-\x{11C36}\x{11C38}-\x{11C45}\x{11C50}-\x{11C6C}',
'Letter' => '\x{11C00}-\x{11C08}\x{11C0A}-\x{11C2E}\x{11C40}',
'Nonspacing_Combining_Mark' => '\x{11C3F}',
'Nonspacing_Mark' => '\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}',
'Virama' => '\x{11C3F}',
'Vowel_Dependent' => '\x{11C2F}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3B}',
Replace With: Select
'All' =>
'\x{11C00}-\x{11C08}' .
'\x{11C0A}-\x{11C36}' .
'\x{11C38}-\x{11C45}' .
'\x{11C50}-\x{11C6C}',
'Letter' =>
'\x{11C00}-\x{11C08}' .
'\x{11C0A}-\x{11C2E}' .
'\x{11C40}',
'Nonspacing_Combining_Mark' =>
'\x{11C3F}',
'Nonspacing_Mark' =>
'\x{11C30}-\x{11C36}' .
'\x{11C38}-\x{11C3D}' .
'\x{11C3F}',
'Virama' =>
'\x{11C3F}',
'Vowel_Dependent' =>
'\x{11C2F}' .
'\x{11C30}-\x{11C36}' .
'\x{11C38}-\x{11C3B}',

./Sources/Who.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
'Jon "Sesquipedalian" Stovell',
// Developers
'Jessica "Suki" González',
'John "live627" Rayes',
'Oscar "Ozp" Rydhé',
'Shawn Bulen',

Replace With: Select
'Shawn Bulen',
// Developers
'John "live627" Rayes',
'Oscar "Ozp" Rydhé',

Find: Select
'Hendrik Jan "Compuart" Visser',
Add After: Select
'Jessica "Suki" González',
'Jon "Sesquipedalian" Stovell',
Find: Select
'Gary M. Gadsdon',
// Customizers
'Diego Andrés',
'Jonathan "vbgamer45" Valentin',
Replace With: Select
'Diego Andrés',
// Customizers
'GL700Wing',
'Johnnie "TwitchisMental" Ballew',
'Jonathan "vbgamer45" Valentin',
Find: Select
'Jack "akabugeyes" Thorsen',
Add Before: Select
'Gary M. Gadsdon',

./Sources/tasks/ApprovePost-Notify.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
'content_type' => 'topic',
'content_id' => $topicOptions['id'],
Replace With: Select
'content_type' => $type == 'topic' ? 'topic' : 'msg',
'content_id' => $type == 'topic' ? $topicOptions['id'] : $msgOptions['id'],

./Sources/tasks/CreatePost-Notify.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
$new_alerts = array();
foreach ($this->alert_rows as $row)
{
$group = implode(' ', array($row['content_type'], $row['content_id'], $row['content_action']));
$new_alerts[$group] = $row['id_member'];
}

foreach ($new_alerts as $member_ids)
updateMemberData($member_ids, array('alerts' => '+'));
Replace With: Select
updateMemberData(array_column($this->alert_rows, 'id_member'), array('alerts' => '+'));

./Themes/default/Errors.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
echo '
<div class="floatright">
Add Before: Select
if ($context['has_filter'])
echo '
<div class="infobox">
<strong>', $txt['applying_filter'], ':</strong> ', $context['filter']['entity'], ' ', $context['filter']['value']['html'], '
</div>';

This operation isn't vital to the installation of this mod.
Find: Select
</div>
', $txt['apply_filter_of_type'], ':';
Add Before: Select
', ($context['has_filter'] ? '<a href="' . $scripturl . '?action=admin;area=logs;sa=errorlog' . ($context['sort_direction'] == 'down' ? ';desc' : '') . '" class="button">' . $txt['clear_filter'] . '</a>' : ''), '
This operation isn't vital to the installation of this mod.
Find: Select
if ($context['has_filter'])
echo '
<div class="information">
<strong>', $txt['applying_filter'], ':</strong> ', $context['filter']['entity'], ' ', $context['filter']['value']['html'], ' [<a href="', $scripturl, '?action=admin;area=logs;sa=errorlog', $context['sort_direction'] == 'down' ? ';desc' : '', '">', $txt['clear_filter'], '</a>]
</div>';

// We have some errors, must be some mods installed :P
Replace With: Select
// We have some errors, must be some mods installed :P
This operation isn't vital to the installation of this mod.
Find: Select
<link rel="stylesheet" href="', $settings['theme_url'], '/css/index', $context['theme_variant'], '.css', $context['browser_cache'], '">
Replace With: Select
', template_css(), '

./Themes/default/Help.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
<title>', $context['page_title'], '</title>
<link rel="stylesheet" href="', $settings['theme_url'], '/css/index', $context['theme_variant'], '.css', $context['browser_cache'], '">
Replace With: Select
<title>', $context['page_title'], '</title>
', template_css(), '
This operation isn't vital to the installation of this mod.
Find: Select
<meta name="robots" content="noindex">
<link rel="stylesheet" href="', $settings['theme_url'], '/css/index', $context['theme_variant'], '.css', $context['browser_cache'], '">
Replace With: Select
<meta name="robots" content="noindex">
', template_css(), '

./Themes/default/Likes.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
<link rel="stylesheet" href="', $settings['theme_url'], '/css/index', $context['theme_variant'], '.css', $context['browser_cache'], '">
Replace With: Select
', template_css(), '

./Themes/default/ModerationCenter.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
<link rel="stylesheet" href="', $settings['theme_url'], '/css/index', $context['theme_variant'], '.css', $context['browser_cache'], '">
Replace With: Select
', template_css(), '

./Themes/default/Packages.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
<link rel="stylesheet" href="', $settings['theme_url'], '/css/index', $context['theme_variant'], '.css', $context['browser_cache'], '">
<link rel="stylesheet" href="', $settings['theme_url'], '/css/admin.css', $context['browser_cache'], '">';
Replace With: Select
', template_css();

./Themes/default/PersonalMessage.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
<li><a href="', $message['member']['href'], '" title="' . $txt['view_profile'] . '">', ($settings['use_image_buttons'] ? '<span class="main_icons profile_sm"></span>' : $txt['view_profile']), '</a></li>';
Replace With: Select
<li><a href="', $message['member']['href'], '" title="' . $txt['view_profile'] . '">', ($settings['use_image_buttons'] ? '<span class="main_icons members"></span>' : $txt['view_profile']), '</a></li>';

./Themes/default/Profile.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
<input type="number" size="4" id="notify_alert_timeout" name="opt_alert_timeout" min="0" value="', $context['member']['alert_timeout'], '">
Replace With: Select
<input type="number" size="4" id="notify_alert_timeout" name="opt_alert_timeout" min="0" max="127" value="', $context['member']['alert_timeout'], '">
This operation isn't vital to the installation of this mod.
Find: Select
if (avatar.src.indexOf("blank.png") > -1)
Replace With: Select
if (avatar.src.indexOf("blank.png") > -1 || selavatar.indexOf("blank.png") == -1)

./Themes/default/Register.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
<link rel="stylesheet" href="', $settings['theme_url'], '/css/index', $context['theme_variant'], '.css', $context['browser_cache'], '">
Replace With: Select
', template_css(), '

./Themes/default/Themes.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
echo ' name="', !empty($setting['default']) ? 'default_' : '', 'options[', $setting['id'], ']" id="', $setting['id'], '" value="', $setting['value'], '"', $setting['type'] == 'number' ? ' size="5"' : (empty($setting['size']) ? ' size="40"' : ' size="' . $setting['size'] . '"'), '>
Replace With: Select
echo ' name="', !empty($setting['default']) ? 'default_' : '', 'options[', $setting['id'], ']" id="options_', $setting['id'], '" value="', $setting['value'], '"', $setting['type'] == 'number' ? '' : (empty($setting['size']) ? ' size="40"' : ' size="' . $setting['size'] . '"'), '>

./Themes/default/Who.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
', $member['is_guest'] ? $member['name'] : '<a href="' . $member['href'] . '" title="' . sprintf($txt['view_profile_of_username'], $member['name']) . '"' . (empty($member['color']) ? '' : ' style="color: ' . $member['color'] . '"') . '>' . $member['name'] . '</a>', '
Replace With: Select
', $member['is_guest'] ? $member['name'] : '<a href="' . $member['href'] . '" title="' . sprintf($txt['view_profile_of_username'], $member['name']) . '"' . (empty($member['color']) ? '' : ' style="color: ' . $member['color'] . ';"') . '>' . $member['name'] . '</a>', '

./Themes/default/css/index.css

This operation isn't vital to the installation of this mod.
Find: Select
}
#likes .avatar {
max-height: 45px;
max-width: 45px;
margin: 0 10px 0 0;
Replace With: Select
display: flex;
align-items: center;
}
#likes .avatar {
height: 5em;
width: 5em;
margin: 0 10px 0 0;
This operation isn't vital to the installation of this mod.
Find: Select
#likes .avatar, #likes li .like_profile {
vertical-align: middle;
display: inline-block;
Replace With: Select
#likes li .like_profile {
flex: 1 0 auto;
This operation isn't vital to the installation of this mod.
Find: Select
.pagesection .button {
Add Before: Select
html[lang="el-GR"] .button,
html[lang="el-GR"] .quickbuttons > li > a,
html[lang="el-GR"] .inline_mod_check {
text-transform: capitalize;
}
This operation isn't vital to the installation of this mod.
Find: Select
box-sizing: border-box;
width: 49%;
padding-right: 1em;
Replace With: Select
box-sizing: border-box;
width: 55%;
This operation isn't vital to the installation of this mod.
Find: Select
box-sizing: border-box;
width: 50%;
Replace With: Select
box-sizing: border-box;
width: 45%;
This operation isn't vital to the installation of this mod.
Find: Select
#event_time_input input[type="text"] {
width: 100px;
display: inline-block;
Replace With: Select
#event_time_input > div {
display: flex;
}
#event_time_input input.date_input {
width: 40%;
margin: 2px 0.5ch 0;
flex: 1 1 auto;
}
#event_time_input input.time_input {
width: 13ch;
margin: 2px 0.5ch 0;
flex: 0 1 auto;
This operation isn't vital to the installation of this mod.
Find: Select
span.member.hidden {
Add After: Select
display: inline-block;

./Themes/default/index.template.php

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
This operation isn't vital to the installation of this mod.
Find: Select
<a href="', $scripturl, '?action=profile"', !empty($context['self_profile']) ? ' class="active"' : '', ' id="profile_menu_top" onclick="return false;">';
Replace With: Select
<a href="', $scripturl, '?action=profile"', !empty($context['self_profile']) ? ' class="active"' : '', ' id="profile_menu_top">';

./Themes/default/languages/Admin.english.php

This operation isn't vital to the installation of this mod.
Find: Select
// Version: 2.1.0; Admin
Replace With: Select
// Version: 2.1.3; Admin
Find: Select
It is recommended that you <a href="#" id="update-link">update your forum</a> to the latest version as soon as possible. It only takes a minute!';
Replace With: Select
It is recommended that you <a href="#" id="update-link" class="bbc_link strong">update your forum</a> to the latest version as soon as possible. It only takes a minute!';

./Themes/default/languages/Alerts.english.php

This operation isn't vital to the installation of this mod.
Find: Select
// Version: 2.1.0; Alerts
Replace With: Select
// Version: 2.1.3; Alerts
Find: Select
$txt['alert_topic_unapproved_post'] = '{member_link} made a new unapproved reply to {topic_msg} in {board_msg}';
Replace With: Select
$txt['alert_msg_unapproved_post'] = '{member_link} made a new unapproved reply to {topic_msg} in {board_msg}';

./Themes/default/languages/Errors.english.php

This operation isn't vital to the installation of this mod.
Find: Select
// Version: 2.1.0; Errors
Replace With: Select
// Version: 2.1.3; Errors
Find: Select
$txt['registration_no_secret_question'] = 'Sorry, there is no secret question set for this member.';
Add After: Select
$txt['registration_no_verification_questions'] = 'Verification questions not configured properly. Please report this error to an administrator.';
Find: Select
$txt['profile_error_custom_field_mail_fail'] = 'The mail validation check returned an error, you need to enter an email in a valid format (user@domain).';
Add Before: Select
$txt['profile_error_website_title_too_long'] = 'The website title is too long.';

./Themes/default/languages/Help.english.php

This operation isn't vital to the installation of this mod.
Find: Select
// Version: 2.1.0; Help
Replace With: Select
// Version: 2.1.3; Help
Find: Select
$helptxt['languages_rtl'] = 'Check this box if this language reads from right to left (e.g. Hebrew, Arabic).';
Replace With: Select
$helptxt['languages_rtl'] = 'Enter a "1" here if this language reads from right to left (e.g. Hebrew, Arabic). Leave it "0" for left to right languages.';

./Themes/default/languages/Install.english.php

This operation isn't vital to the installation of this mod.
Find: Select
// Version: 2.1.0; Install
Replace With: Select
// Version: 2.1.3; Install
Find: Select
$txt['lang_rtl'] = false;
Replace With: Select
$txt['lang_rtl'] = '0';
Find: Select
$txt['upgrade_stats_collection'] = 'Allow Simple Machines to collect basic stats monthly.';
Add Before: Select
$txt['upgrade_reprocess_attachments'] = 'Rerun attachment conversion';
Find: Select
// Page titles
Add Before: Select
// Attachment & Avatar folder checks
$txt['warning_av_missing'] = 'Warning! Avatar directory not found. Continuing may be unsafe. Please confirm folder settings before proceeding.';
$txt['warning_custom_av_missing'] = 'Warning! Custom avatar directory not found. Continuing may be unsafe. Please confirm folder settings before proceeding.';
$txt['warning_att_dir_missing'] = 'Warning! One or more attachment directories not found. Continuing may be unsafe. Please confirm folder settings before proceeding.';

./Themes/default/languages/Profile.english.php

This operation isn't vital to the installation of this mod.
Find: Select
// Version: 2.1.0; Profile
Replace With: Select
// Version: 2.1.3; Profile
Find: Select
$txt['notify_alert_timeout'] = 'Timeout for Alert desktop notifications';
Replace With: Select
$txt['notify_alert_timeout'] = 'Timeout for Alert desktop notifications (in seconds)';

./Themes/default/languages/Timezones.english.php

Find: Select
// Version: 2.1.2; Timezones
Replace With: Select
// Version: 2.1.3; Timezones
Find: Select
$txt['Europe/Kiev'] = 'Kyiv';
Replace With: Select
$txt['Europe/Kyiv'] = 'Kyiv';

./Themes/default/languages/Who.english.php

This operation isn't vital to the installation of this mod.
Find: Select
// Version: 2.1.0; Who
Replace With: Select
// Version: 2.1.3; Who
Find: Select
$txt['credits_code_contributors'] = 'everyone who <a href="https://github.com/SimpleMachines/SMF2.1/graphs/contributors">contributed on GitHub</a>';
Replace With: Select
$txt['credits_code_contributors'] = 'everyone who <a href="https://github.com/SimpleMachines/SMF/graphs/contributors">contributed on GitHub</a>';

./Themes/default/languages/index.english.php

Find: Select
// Version: 2.1.2; index
Replace With: Select
// Version: 2.1.3; index
Find: Select
// Character set and right to left?
$txt['lang_rtl'] = false;
Replace With: Select
// Character set right to left? 0 = ltr; 1 = rtl
$txt['lang_rtl'] = '0';

./Themes/default/scripts/jquery.sceditor.smf.js

This operation isn't vital to the installation of this mod.
Find: Select
* @version 2.1.0
Replace With: Select
* @version 2.1.3
Find: Select
tags: {
a: {
'data-type': ['url']
}
},
format: function (element, content)
Replace With: Select
format(element, content)
Find: Select
return '[url=' + decodeURI(element.href) + ']' + content + '[/url]';
Add Before: Select
if (element.hasAttribute('data-type') && element.getAttribute('data-type') != 'url')
return content;

Find: Select
return '<a href="' + smf_scripturl +'?action=profile;u='+ attrs.defaultattr + '" class="mention" data-mention="'+ attrs.defaultattr + '">@'+ content.replace('@','') +'</a>';
Replace With: Select
return '<a href="' + smf_scripturl +'?action=profile;u='+ attrs.defaultattr + '" class="mention" data-type="mention" data-mention="'+ attrs.defaultattr + '">@'+ content.replace('@', '') +'</a>';

./Themes/default/scripts/smf_fileUpload.js

Find: Select
}
});
Add After: Select

// Remove BBC from the post text, if present.
var attachBbcRegex = new RegExp('\\[attach[^\\]]+id=' + attachmentId + '[^\\]]*\\][^\\[\\]]*\\[/attach\\]', 'g');

var e = $('#' + oEditorID).get(0);
var oEditor = sceditor.instance(e);
var newEditorVal = oEditor.val().replace(attachBbcRegex, '');

oEditor.val(newEditorVal);

./Themes/default/scripts/theme.js

Find: Select
$('a.bbc_link img.bbc_img').parent().css('border', '0');
Replace With: Select
$('a.bbc_link img').parent().css('border', '0');

./cron.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
define('SMF_VERSION', '2.1.2');
Replace With: Select
define('SMF_VERSION', '2.1.3');

./index.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
define('SMF_VERSION', '2.1.2');
Replace With: Select
define('SMF_VERSION', '2.1.3');

./proxy.php

Find: Select
* @version 2.1.2
Replace With: Select
* @version 2.1.3
Find: Select
define('SMF_VERSION', '2.1.2');
Replace With: Select
define('SMF_VERSION', '2.1.3');

Code

auto_1.php
This file should not be able to execute standalone.You may have to run the following queries manually.
Query: Select
<?php updateSettings(array('smfVersion' => '2.1.3'));

File Operations

Move the included file "CaseTitle.php" to "./Sources/Unicode/".
Move the included file "Idna.php" to "./Sources/Unicode/".
Move the included file "Metadata.php" to "./Sources/Unicode/".
Advertisement: