Dep: update

주로 PHAN
This commit is contained in:
Hide_D committed 2021-08-06 22:39:09 +09:00
1 parent 5310c2e7f6
commit b306601c72
1098 files changed
+92137 -33228

No files matched your search

+925
View File
@@ -0,0 +1,925 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Polyfill\Intl\Idn;
use Exception;
use Normalizer;
use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
/**
* @see https://www.unicode.org/reports/tr46/
*
* @internal
*/
final class Idn
{
public const ERROR_EMPTY_LABEL = 1;
public const ERROR_LABEL_TOO_LONG = 2;
public const ERROR_DOMAIN_NAME_TOO_LONG = 4;
public const ERROR_LEADING_HYPHEN = 8;
public const ERROR_TRAILING_HYPHEN = 0x10;
public const ERROR_HYPHEN_3_4 = 0x20;
public const ERROR_LEADING_COMBINING_MARK = 0x40;
public const ERROR_DISALLOWED = 0x80;
public const ERROR_PUNYCODE = 0x100;
public const ERROR_LABEL_HAS_DOT = 0x200;
public const ERROR_INVALID_ACE_LABEL = 0x400;
public const ERROR_BIDI = 0x800;
public const ERROR_CONTEXTJ = 0x1000;
public const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
public const ERROR_CONTEXTO_DIGITS = 0x4000;
public const INTL_IDNA_VARIANT_2003 = 0;
public const INTL_IDNA_VARIANT_UTS46 = 1;
public const IDNA_DEFAULT = 0;
public const IDNA_ALLOW_UNASSIGNED = 1;
public const IDNA_USE_STD3_RULES = 2;
public const IDNA_CHECK_BIDI = 4;
public const IDNA_CHECK_CONTEXTJ = 8;
public const IDNA_NONTRANSITIONAL_TO_ASCII = 16;
public const IDNA_NONTRANSITIONAL_TO_UNICODE = 32;
public const MAX_DOMAIN_SIZE = 253;
public const MAX_LABEL_SIZE = 63;
public const BASE = 36;
public const TMIN = 1;
public const TMAX = 26;
public const SKEW = 38;
public const DAMP = 700;
public const INITIAL_BIAS = 72;
public const INITIAL_N = 128;
public const DELIMITER = '-';
public const MAX_INT = 2147483647;
/**
* Contains the numeric value of a basic code point (for use in representing integers) in the
* range 0 to BASE-1, or -1 if b is does not represent a value.
*
* @var array<int, int>
*/
private static $basicToDigit = [
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
];
/**
* @var array<int, int>
*/
private static $virama;
/**
* @var array<int, string>
*/
private static $mapped;
/**
* @var array<int, bool>
*/
private static $ignored;
/**
* @var array<int, string>
*/
private static $deviation;
/**
* @var array<int, bool>
*/
private static $disallowed;
/**
* @var array<int, string>
*/
private static $disallowed_STD3_mapped;
/**
* @var array<int, bool>
*/
private static $disallowed_STD3_valid;
/**
* @var bool
*/
private static $mappingTableLoaded = false;
/**
* @see https://www.unicode.org/reports/tr46/#ToASCII
*
* @param string $domainName
* @param int $options
* @param int $variant
* @param array $idna_info
*
* @return string|false
*/
public static function idn_to_ascii($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = [])
{
if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
@trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
}
$options = [
'CheckHyphens' => true,
'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_ASCII),
'VerifyDnsLength' => true,
];
$info = new Info();
$labels = self::process((string) $domainName, $options, $info);
foreach ($labels as $i => $label) {
// Only convert labels to punycode that contain non-ASCII code points
if (1 === preg_match('/[^\x00-\x7F]/', $label)) {
try {
$label = 'xn--'.self::punycodeEncode($label);
} catch (Exception $e) {
$info->errors |= self::ERROR_PUNYCODE;
}
$labels[$i] = $label;
}
}
if ($options['VerifyDnsLength']) {
self::validateDomainAndLabelLength($labels, $info);
}
$idna_info = [
'result' => implode('.', $labels),
'isTransitionalDifferent' => $info->transitionalDifferent,
'errors' => $info->errors,
];
return 0 === $info->errors ? $idna_info['result'] : false;
}
/**
* @see https://www.unicode.org/reports/tr46/#ToUnicode
*
* @param string $domainName
* @param int $options
* @param int $variant
* @param array $idna_info
*
* @return string|false
*/
public static function idn_to_utf8($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = [])
{
if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
@trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
}
$info = new Info();
$labels = self::process((string) $domainName, [
'CheckHyphens' => true,
'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_UNICODE),
], $info);
$idna_info = [
'result' => implode('.', $labels),
'isTransitionalDifferent' => $info->transitionalDifferent,
'errors' => $info->errors,
];
return 0 === $info->errors ? $idna_info['result'] : false;
}
/**
* @param string $label
*
* @return bool
*/
private static function isValidContextJ(array $codePoints, $label)
{
if (!isset(self::$virama)) {
self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php';
}
$offset = 0;
foreach ($codePoints as $i => $codePoint) {
if (0x200C !== $codePoint && 0x200D !== $codePoint) {
continue;
}
if (!isset($codePoints[$i - 1])) {
return false;
}
// If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
if (isset(self::$virama[$codePoints[$i - 1]])) {
continue;
}
// If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
// True;
// Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, \PREG_OFFSET_CAPTURE, $offset)) {
$offset += \strlen($matches[1][0]);
continue;
}
return false;
}
return true;
}
/**
* @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
*
* @param string $input
* @param array<string, bool> $options
*
* @return string
*/
private static function mapCodePoints($input, array $options, Info $info)
{
$str = '';
$useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
$transitional = $options['Transitional_Processing'];
foreach (self::utf8Decode($input) as $codePoint) {
$data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
switch ($data['status']) {
case 'disallowed':
$info->errors |= self::ERROR_DISALLOWED;
// no break.
case 'valid':
$str .= mb_chr($codePoint, 'utf-8');
break;
case 'ignored':
// Do nothing.
break;
case 'mapped':
$str .= $data['mapping'];
break;
case 'deviation':
$info->transitionalDifferent = true;
$str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8'));
break;
}
}
return $str;
}
/**
* @see https://www.unicode.org/reports/tr46/#Processing
*
* @param string $domain
* @param array<string, bool> $options
*
* @return array<int, string>
*/
private static function process($domain, array $options, Info $info)
{
// If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
// we need to respect the VerifyDnsLength option.
$checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
if ($checkForEmptyLabels && '' === $domain) {
$info->errors |= self::ERROR_EMPTY_LABEL;
return [$domain];
}
// Step 1. Map each code point in the domain name string
$domain = self::mapCodePoints($domain, $options, $info);
// Step 2. Normalize the domain name string to Unicode Normalization Form C.
if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) {
$domain = Normalizer::normalize($domain, Normalizer::FORM_C);
}
// Step 3. Break the string into labels at U+002E (.) FULL STOP.
$labels = explode('.', $domain);
$lastLabelIndex = \count($labels) - 1;
// Step 4. Convert and validate each label in the domain name string.
foreach ($labels as $i => $label) {
$validationOptions = $options;
if ('xn--' === substr($label, 0, 4)) {
try {
$label = self::punycodeDecode(substr($label, 4));
} catch (Exception $e) {
$info->errors |= self::ERROR_PUNYCODE;
continue;
}
$validationOptions['Transitional_Processing'] = false;
$labels[$i] = $label;
}
self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
}
if ($info->bidiDomain && !$info->validBidiDomain) {
$info->errors |= self::ERROR_BIDI;
}
// Any input domain name string that does not record an error has been successfully
// processed according to this specification. Conversely, if an input domain_name string
// causes an error, then the processing of the input domain_name string fails. Determining
// what to do with error input is up to the caller, and not in the scope of this document.
return $labels;
}
/**
* @see https://tools.ietf.org/html/rfc5893#section-2
*
* @param string $label
*/
private static function validateBidiLabel($label, Info $info)
{
if (1 === preg_match(Regex::RTL_LABEL, $label)) {
$info->bidiDomain = true;
// Step 1. The first character must be a character with Bidi property L, R, or AL.
// If it has the R or AL property, it is an RTL label
if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) {
$info->validBidiDomain = false;
return;
}
// Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
// CS, ET, ON, BN, or NSM are allowed.
if (1 === preg_match(Regex::BIDI_STEP_2, $label)) {
$info->validBidiDomain = false;
return;
}
// Step 3. In an RTL label, the end of the label must be a character with Bidi property
// R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) {
$info->validBidiDomain = false;
return;
}
// Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) {
$info->validBidiDomain = false;
return;
}
return;
}
// We are a LTR label
// Step 1. The first character must be a character with Bidi property L, R, or AL.
// If it has the L property, it is an LTR label.
if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) {
$info->validBidiDomain = false;
return;
}
// Step 5. In an LTR label, only characters with the Bidi properties L, EN,
// ES, CS, ET, ON, BN, or NSM are allowed.
if (1 === preg_match(Regex::BIDI_STEP_5, $label)) {
$info->validBidiDomain = false;
return;
}
// Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
// EN, followed by zero or more characters with Bidi property NSM.
if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) {
$info->validBidiDomain = false;
return;
}
}
/**
* @param array<int, string> $labels
*/
private static function validateDomainAndLabelLength(array $labels, Info $info)
{
$maxDomainSize = self::MAX_DOMAIN_SIZE;
$length = \count($labels);
// Number of "." delimiters.
$domainLength = $length - 1;
// If the last label is empty and it is not the first label, then it is the root label.
// Increase the max size by 1, making it 254, to account for the root label's "."
// delimiter. This also means we don't need to check the last label's length for being too
// long.
if ($length > 1 && '' === $labels[$length - 1]) {
++$maxDomainSize;
--$length;
}
for ($i = 0; $i < $length; ++$i) {
$bytes = \strlen($labels[$i]);
$domainLength += $bytes;
if ($bytes > self::MAX_LABEL_SIZE) {
$info->errors |= self::ERROR_LABEL_TOO_LONG;
}
}
if ($domainLength > $maxDomainSize) {
$info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
}
}
/**
* @see https://www.unicode.org/reports/tr46/#Validity_Criteria
*
* @param string $label
* @param array<string, bool> $options
* @param bool $canBeEmpty
*/
private static function validateLabel($label, Info $info, array $options, $canBeEmpty)
{
if ('' === $label) {
if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
$info->errors |= self::ERROR_EMPTY_LABEL;
}
return;
}
// Step 1. The label must be in Unicode Normalization Form C.
if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) {
$info->errors |= self::ERROR_INVALID_ACE_LABEL;
}
$codePoints = self::utf8Decode($label);
if ($options['CheckHyphens']) {
// Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
// in both the thrid and fourth positions.
if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) {
$info->errors |= self::ERROR_HYPHEN_3_4;
}
// Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
// HYPHEN-MINUS character.
if ('-' === substr($label, 0, 1)) {
$info->errors |= self::ERROR_LEADING_HYPHEN;
}
if ('-' === substr($label, -1, 1)) {
$info->errors |= self::ERROR_TRAILING_HYPHEN;
}
}
// Step 4. The label must not contain a U+002E (.) FULL STOP.
if (false !== strpos($label, '.')) {
$info->errors |= self::ERROR_LABEL_HAS_DOT;
}
// Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
if (1 === preg_match(Regex::COMBINING_MARK, $label)) {
$info->errors |= self::ERROR_LEADING_COMBINING_MARK;
}
// Step 6. Each code point in the label must only have certain status values according to
// Section 5, IDNA Mapping Table:
$transitional = $options['Transitional_Processing'];
$useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
foreach ($codePoints as $codePoint) {
$data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
$status = $data['status'];
if ('valid' === $status || (!$transitional && 'deviation' === $status)) {
continue;
}
$info->errors |= self::ERROR_DISALLOWED;
break;
}
// Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
// The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
// [IDNA2008].
if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
$info->errors |= self::ERROR_CONTEXTJ;
}
// Step 8. If CheckBidi, and if the domain name is a Bidi domain name, then the label must
// satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
self::validateBidiLabel($label, $info);
}
}
/**
* @see https://tools.ietf.org/html/rfc3492#section-6.2
*
* @param string $input
*
* @return string
*/
private static function punycodeDecode($input)
{
$n = self::INITIAL_N;
$out = 0;
$i = 0;
$bias = self::INITIAL_BIAS;
$lastDelimIndex = strrpos($input, self::DELIMITER);
$b = false === $lastDelimIndex ? 0 : $lastDelimIndex;
$inputLength = \strlen($input);
$output = [];
$bytes = array_map('ord', str_split($input));
for ($j = 0; $j < $b; ++$j) {
if ($bytes[$j] > 0x7F) {
throw new Exception('Invalid input');
}
$output[$out++] = $input[$j];
}
if ($b > 0) {
++$b;
}
for ($in = $b; $in < $inputLength; ++$out) {
$oldi = $i;
$w = 1;
for ($k = self::BASE; /* no condition */; $k += self::BASE) {
if ($in >= $inputLength) {
throw new Exception('Invalid input');
}
$digit = self::$basicToDigit[$bytes[$in++] & 0xFF];
if ($digit < 0) {
throw new Exception('Invalid input');
}
if ($digit > intdiv(self::MAX_INT - $i, $w)) {
throw new Exception('Integer overflow');
}
$i += $digit * $w;
if ($k <= $bias) {
$t = self::TMIN;
} elseif ($k >= $bias + self::TMAX) {
$t = self::TMAX;
} else {
$t = $k - $bias;
}
if ($digit < $t) {
break;
}
$baseMinusT = self::BASE - $t;
if ($w > intdiv(self::MAX_INT, $baseMinusT)) {
throw new Exception('Integer overflow');
}
$w *= $baseMinusT;
}
$outPlusOne = $out + 1;
$bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
throw new Exception('Integer overflow');
}
$n += intdiv($i, $outPlusOne);
$i %= $outPlusOne;
array_splice($output, $i++, 0, [mb_chr($n, 'utf-8')]);
}
return implode('', $output);
}
/**
* @see https://tools.ietf.org/html/rfc3492#section-6.3
*
* @param string $input
*
* @return string
*/
private static function punycodeEncode($input)
{
$n = self::INITIAL_N;
$delta = 0;
$out = 0;
$bias = self::INITIAL_BIAS;
$inputLength = 0;
$output = '';
$iter = self::utf8Decode($input);
foreach ($iter as $codePoint) {
++$inputLength;
if ($codePoint < 0x80) {
$output .= \chr($codePoint);
++$out;
}
}
$h = $out;
$b = $out;
if ($b > 0) {
$output .= self::DELIMITER;
++$out;
}
while ($h < $inputLength) {
$m = self::MAX_INT;
foreach ($iter as $codePoint) {
if ($codePoint >= $n && $codePoint < $m) {
$m = $codePoint;
}
}
if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) {
throw new Exception('Integer overflow');
}
$delta += ($m - $n) * ($h + 1);
$n = $m;
foreach ($iter as $codePoint) {
if ($codePoint < $n && 0 === ++$delta) {
throw new Exception('Integer overflow');
}
if ($codePoint === $n) {
$q = $delta;
for ($k = self::BASE; /* no condition */; $k += self::BASE) {
if ($k <= $bias) {
$t = self::TMIN;
} elseif ($k >= $bias + self::TMAX) {
$t = self::TMAX;
} else {
$t = $k - $bias;
}
if ($q < $t) {
break;
}
$qMinusT = $q - $t;
$baseMinusT = self::BASE - $t;
$output .= self::encodeDigit($t + ($qMinusT) % ($baseMinusT), false);
++$out;
$q = intdiv($qMinusT, $baseMinusT);
}
$output .= self::encodeDigit($q, false);
++$out;
$bias = self::adaptBias($delta, $h + 1, $h === $b);
$delta = 0;
++$h;
}
}
++$delta;
++$n;
}
return $output;
}
/**
* @see https://tools.ietf.org/html/rfc3492#section-6.1
*
* @param int $delta
* @param int $numPoints
* @param bool $firstTime
*
* @return int
*/
private static function adaptBias($delta, $numPoints, $firstTime)
{
// xxx >> 1 is a faster way of doing intdiv(xxx, 2)
$delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1;
$delta += intdiv($delta, $numPoints);
$k = 0;
while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) {
$delta = intdiv($delta, self::BASE - self::TMIN);
$k += self::BASE;
}
return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
}
/**
* @param int $d
* @param bool $flag
*
* @return string
*/
private static function encodeDigit($d, $flag)
{
return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
}
/**
* Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
* invalid byte sequences will be replaced by a U+FFFD replacement code point.
*
* @see https://encoding.spec.whatwg.org/#utf-8-decoder
*
* @param string $input
*
* @return array<int, int>
*/
private static function utf8Decode($input)
{
$bytesSeen = 0;
$bytesNeeded = 0;
$lowerBoundary = 0x80;
$upperBoundary = 0xBF;
$codePoint = 0;
$codePoints = [];
$length = \strlen($input);
for ($i = 0; $i < $length; ++$i) {
$byte = \ord($input[$i]);
if (0 === $bytesNeeded) {
if ($byte >= 0x00 && $byte <= 0x7F) {
$codePoints[] = $byte;
continue;
}
if ($byte >= 0xC2 && $byte <= 0xDF) {
$bytesNeeded = 1;
$codePoint = $byte & 0x1F;
} elseif ($byte >= 0xE0 && $byte <= 0xEF) {
if (0xE0 === $byte) {
$lowerBoundary = 0xA0;
} elseif (0xED === $byte) {
$upperBoundary = 0x9F;
}
$bytesNeeded = 2;
$codePoint = $byte & 0xF;
} elseif ($byte >= 0xF0 && $byte <= 0xF4) {
if (0xF0 === $byte) {
$lowerBoundary = 0x90;
} elseif (0xF4 === $byte) {
$upperBoundary = 0x8F;
}
$bytesNeeded = 3;
$codePoint = $byte & 0x7;
} else {
$codePoints[] = 0xFFFD;
}
continue;
}
if ($byte < $lowerBoundary || $byte > $upperBoundary) {
$codePoint = 0;
$bytesNeeded = 0;
$bytesSeen = 0;
$lowerBoundary = 0x80;
$upperBoundary = 0xBF;
--$i;
$codePoints[] = 0xFFFD;
continue;
}
$lowerBoundary = 0x80;
$upperBoundary = 0xBF;
$codePoint = ($codePoint << 6) | ($byte & 0x3F);
if (++$bytesSeen !== $bytesNeeded) {
continue;
}
$codePoints[] = $codePoint;
$codePoint = 0;
$bytesNeeded = 0;
$bytesSeen = 0;
}
// String unexpectedly ended, so append a U+FFFD code point.
if (0 !== $bytesNeeded) {
$codePoints[] = 0xFFFD;
}
return $codePoints;
}
/**
* @param int $codePoint
* @param bool $useSTD3ASCIIRules
*
* @return array{status: string, mapping?: string}
*/
private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
{
if (!self::$mappingTableLoaded) {
self::$mappingTableLoaded = true;
self::$mapped = require __DIR__.'/Resources/unidata/mapped.php';
self::$ignored = require __DIR__.'/Resources/unidata/ignored.php';
self::$deviation = require __DIR__.'/Resources/unidata/deviation.php';
self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php';
self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php';
self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php';
}
if (isset(self::$mapped[$codePoint])) {
return ['status' => 'mapped', 'mapping' => self::$mapped[$codePoint]];
}
if (isset(self::$ignored[$codePoint])) {
return ['status' => 'ignored'];
}
if (isset(self::$deviation[$codePoint])) {
return ['status' => 'deviation', 'mapping' => self::$deviation[$codePoint]];
}
if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) {
return ['status' => 'disallowed'];
}
$isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
$status = 'disallowed';
if (!$useSTD3ASCIIRules) {
$status = $isDisallowedMapped ? 'mapped' : 'valid';
}
if ($isDisallowedMapped) {
return ['status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]];
}
return ['status' => $status];
}
return ['status' => 'valid'];
}
}
+23
View File
@@ -0,0 +1,23 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Polyfill\Intl\Idn;
/**
* @internal
*/
class Info
{
public $bidiDomain = false;
public $errors = 0;
public $validBidiDomain = true;
public $transitionalDifferent = false;
}
+19
View File
@@ -0,0 +1,19 @@
Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham <trevor.rowbotham@pm.me>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+12
View File
@@ -0,0 +1,12 @@
Symfony Polyfill / Intl: Idn
============================
This component provides [`idn_to_ascii`](https://php.net/idn-to-ascii) and [`idn_to_utf8`](https://php.net/idn-to-utf8) functions to users who run php versions without the [Intl](https://php.net/intl) extension.
More information can be found in the
[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
License
=======
This library is released under the [MIT license](LICENSE).
@@ -0,0 +1,375 @@
<?php
namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
/**
* @internal
*/
final class DisallowedRanges
{
/**
* @param int $codePoint
*
* @return bool
*/
public static function inRange($codePoint)
{
if ($codePoint >= 128 && $codePoint <= 159) {
return true;
}
if ($codePoint >= 2155 && $codePoint <= 2207) {
return true;
}
if ($codePoint >= 3676 && $codePoint <= 3712) {
return true;
}
if ($codePoint >= 3808 && $codePoint <= 3839) {
return true;
}
if ($codePoint >= 4059 && $codePoint <= 4095) {
return true;
}
if ($codePoint >= 4256 && $codePoint <= 4293) {
return true;
}
if ($codePoint >= 6849 && $codePoint <= 6911) {
return true;
}
if ($codePoint >= 11859 && $codePoint <= 11903) {
return true;
}
if ($codePoint >= 42955 && $codePoint <= 42996) {
return true;
}
if ($codePoint >= 55296 && $codePoint <= 57343) {
return true;
}
if ($codePoint >= 57344 && $codePoint <= 63743) {
return true;
}
if ($codePoint >= 64218 && $codePoint <= 64255) {
return true;
}
if ($codePoint >= 64976 && $codePoint <= 65007) {
return true;
}
if ($codePoint >= 65630 && $codePoint <= 65663) {
return true;
}
if ($codePoint >= 65953 && $codePoint <= 65999) {
return true;
}
if ($codePoint >= 66046 && $codePoint <= 66175) {
return true;
}
if ($codePoint >= 66518 && $codePoint <= 66559) {
return true;
}
if ($codePoint >= 66928 && $codePoint <= 67071) {
return true;
}
if ($codePoint >= 67432 && $codePoint <= 67583) {
return true;
}
if ($codePoint >= 67760 && $codePoint <= 67807) {
return true;
}
if ($codePoint >= 67904 && $codePoint <= 67967) {
return true;
}
if ($codePoint >= 68256 && $codePoint <= 68287) {
return true;
}
if ($codePoint >= 68528 && $codePoint <= 68607) {
return true;
}
if ($codePoint >= 68681 && $codePoint <= 68735) {
return true;
}
if ($codePoint >= 68922 && $codePoint <= 69215) {
return true;
}
if ($codePoint >= 69298 && $codePoint <= 69375) {
return true;
}
if ($codePoint >= 69466 && $codePoint <= 69551) {
return true;
}
if ($codePoint >= 70207 && $codePoint <= 70271) {
return true;
}
if ($codePoint >= 70517 && $codePoint <= 70655) {
return true;
}
if ($codePoint >= 70874 && $codePoint <= 71039) {
return true;
}
if ($codePoint >= 71134 && $codePoint <= 71167) {
return true;
}
if ($codePoint >= 71370 && $codePoint <= 71423) {
return true;
}
if ($codePoint >= 71488 && $codePoint <= 71679) {
return true;
}
if ($codePoint >= 71740 && $codePoint <= 71839) {
return true;
}
if ($codePoint >= 72026 && $codePoint <= 72095) {
return true;
}
if ($codePoint >= 72441 && $codePoint <= 72703) {
return true;
}
if ($codePoint >= 72887 && $codePoint <= 72959) {
return true;
}
if ($codePoint >= 73130 && $codePoint <= 73439) {
return true;
}
if ($codePoint >= 73465 && $codePoint <= 73647) {
return true;
}
if ($codePoint >= 74650 && $codePoint <= 74751) {
return true;
}
if ($codePoint >= 75076 && $codePoint <= 77823) {
return true;
}
if ($codePoint >= 78905 && $codePoint <= 82943) {
return true;
}
if ($codePoint >= 83527 && $codePoint <= 92159) {
return true;
}
if ($codePoint >= 92784 && $codePoint <= 92879) {
return true;
}
if ($codePoint >= 93072 && $codePoint <= 93759) {
return true;
}
if ($codePoint >= 93851 && $codePoint <= 93951) {
return true;
}
if ($codePoint >= 94112 && $codePoint <= 94175) {
return true;
}
if ($codePoint >= 101590 && $codePoint <= 101631) {
return true;
}
if ($codePoint >= 101641 && $codePoint <= 110591) {
return true;
}
if ($codePoint >= 110879 && $codePoint <= 110927) {
return true;
}
if ($codePoint >= 111356 && $codePoint <= 113663) {
return true;
}
if ($codePoint >= 113828 && $codePoint <= 118783) {
return true;
}
if ($codePoint >= 119366 && $codePoint <= 119519) {
return true;
}
if ($codePoint >= 119673 && $codePoint <= 119807) {
return true;
}
if ($codePoint >= 121520 && $codePoint <= 122879) {
return true;
}
if ($codePoint >= 122923 && $codePoint <= 123135) {
return true;
}
if ($codePoint >= 123216 && $codePoint <= 123583) {
return true;
}
if ($codePoint >= 123648 && $codePoint <= 124927) {
return true;
}
if ($codePoint >= 125143 && $codePoint <= 125183) {
return true;
}
if ($codePoint >= 125280 && $codePoint <= 126064) {
return true;
}
if ($codePoint >= 126133 && $codePoint <= 126208) {
return true;
}
if ($codePoint >= 126270 && $codePoint <= 126463) {
return true;
}
if ($codePoint >= 126652 && $codePoint <= 126703) {
return true;
}
if ($codePoint >= 126706 && $codePoint <= 126975) {
return true;
}
if ($codePoint >= 127406 && $codePoint <= 127461) {
return true;
}
if ($codePoint >= 127590 && $codePoint <= 127743) {
return true;
}
if ($codePoint >= 129202 && $codePoint <= 129279) {
return true;
}
if ($codePoint >= 129751 && $codePoint <= 129791) {
return true;
}
if ($codePoint >= 129995 && $codePoint <= 130031) {
return true;
}
if ($codePoint >= 130042 && $codePoint <= 131069) {
return true;
}
if ($codePoint >= 173790 && $codePoint <= 173823) {
return true;
}
if ($codePoint >= 191457 && $codePoint <= 194559) {
return true;
}
if ($codePoint >= 195102 && $codePoint <= 196605) {
return true;
}
if ($codePoint >= 201547 && $codePoint <= 262141) {
return true;
}
if ($codePoint >= 262144 && $codePoint <= 327677) {
return true;
}
if ($codePoint >= 327680 && $codePoint <= 393213) {
return true;
}
if ($codePoint >= 393216 && $codePoint <= 458749) {
return true;
}
if ($codePoint >= 458752 && $codePoint <= 524285) {
return true;
}
if ($codePoint >= 524288 && $codePoint <= 589821) {
return true;
}
if ($codePoint >= 589824 && $codePoint <= 655357) {
return true;
}
if ($codePoint >= 655360 && $codePoint <= 720893) {
return true;
}
if ($codePoint >= 720896 && $codePoint <= 786429) {
return true;
}
if ($codePoint >= 786432 && $codePoint <= 851965) {
return true;
}
if ($codePoint >= 851968 && $codePoint <= 917501) {
return true;
}
if ($codePoint >= 917536 && $codePoint <= 917631) {
return true;
}
if ($codePoint >= 917632 && $codePoint <= 917759) {
return true;
}
if ($codePoint >= 918000 && $codePoint <= 983037) {
return true;
}
if ($codePoint >= 983040 && $codePoint <= 1048573) {
return true;
}
if ($codePoint >= 1048576 && $codePoint <= 1114109) {
return true;
}
return false;
}
}
@@ -0,0 +1,24 @@
<?php
namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
/**
* @internal
*/
final class Regex
{
const COMBINING_MARK = '/^[\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{0903}\x{093A}\x{093B}\x{093C}\x{093E}-\x{0940}\x{0941}-\x{0948}\x{0949}-\x{094C}\x{094D}\x{094E}-\x{094F}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{0982}-\x{0983}\x{09BC}\x{09BE}-\x{09C0}\x{09C1}-\x{09C4}\x{09C7}-\x{09C8}\x{09CB}-\x{09CC}\x{09CD}\x{09D7}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A03}\x{0A3C}\x{0A3E}-\x{0A40}\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{0A83}\x{0ABC}\x{0ABE}-\x{0AC0}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0AC9}\x{0ACB}-\x{0ACC}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B02}-\x{0B03}\x{0B3C}\x{0B3E}\x{0B3F}\x{0B40}\x{0B41}-\x{0B44}\x{0B47}-\x{0B48}\x{0B4B}-\x{0B4C}\x{0B4D}\x{0B55}-\x{0B56}\x{0B57}\x{0B62}-\x{0B63}\x{0B82}\x{0BBE}-\x{0BBF}\x{0BC0}\x{0BC1}-\x{0BC2}\x{0BC6}-\x{0BC8}\x{0BCA}-\x{0BCC}\x{0BCD}\x{0BD7}\x{0C00}\x{0C01}-\x{0C03}\x{0C04}\x{0C3E}-\x{0C40}\x{0C41}-\x{0C44}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0C82}-\x{0C83}\x{0CBC}\x{0CBE}\x{0CBF}\x{0CC0}-\x{0CC4}\x{0CC6}\x{0CC7}-\x{0CC8}\Line truncated
const RTL_LABEL = '/[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\Line truncated
const BIDI_STEP_1_LTR = '/^[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\Line truncated
const BIDI_STEP_1_RTL = '/^[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10Line truncated
const BIDI_STEP_2 = '/[^\x{0000}-\x{0008}\x{000E}-\x{001B}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{Line truncated
const BIDI_STEP_3 = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FF10}-\x{FF19}\x{102E1}-\x{1Line truncated
const BIDI_STEP_4_AN = '/[\x{0600}-\x{0605}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{06DD}\x{08E2}\x{10D30}-\x{10D39}\x{10E60}-\x{10E7E}]/u';
const BIDI_STEP_4_EN = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{06F0}-\x{06F9}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{1D7CE}-\x{1D7FF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}]/u';
const BIDI_STEP_5 = '/[\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0085}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{1680}\x{2000}-\x{200A}\x{200F}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{205F}\x{2066}\x{2067}\x{2068}\x{2069}\x{3000}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFLine truncated
const BIDI_STEP_6 = '/[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06ELine truncated
const ZWNJ = '/([\x{A872}\x{10ACD}\x{10AD7}\x{10D00}\x{10FCB}\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{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}][\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\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{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0Line truncated
}
@@ -0,0 +1,8 @@
<?php
return array (
223 => 'ss',
962 => 'σ',
8204 => '',
8205 => '',
);
@@ -0,0 +1,2638 @@
<?php
return array (
888 => true,
889 => true,
896 => true,
897 => true,
898 => true,
899 => true,
907 => true,
909 => true,
930 => true,
1216 => true,
1328 => true,
1367 => true,
1368 => true,
1419 => true,
1420 => true,
1424 => true,
1480 => true,
1481 => true,
1482 => true,
1483 => true,
1484 => true,
1485 => true,
1486 => true,
1487 => true,
1515 => true,
1516 => true,
1517 => true,
1518 => true,
1525 => true,
1526 => true,
1527 => true,
1528 => true,
1529 => true,
1530 => true,
1531 => true,
1532 => true,
1533 => true,
1534 => true,
1535 => true,
1536 => true,
1537 => true,
1538 => true,
1539 => true,
1540 => true,
1541 => true,
1564 => true,
1565 => true,
1757 => true,
1806 => true,
1807 => true,
1867 => true,
1868 => true,
1970 => true,
1971 => true,
1972 => true,
1973 => true,
1974 => true,
1975 => true,
1976 => true,
1977 => true,
1978 => true,
1979 => true,
1980 => true,
1981 => true,
1982 => true,
1983 => true,
2043 => true,
2044 => true,
2094 => true,
2095 => true,
2111 => true,
2140 => true,
2141 => true,
2143 => true,
2229 => true,
2248 => true,
2249 => true,
2250 => true,
2251 => true,
2252 => true,
2253 => true,
2254 => true,
2255 => true,
2256 => true,
2257 => true,
2258 => true,
2274 => true,
2436 => true,
2445 => true,
2446 => true,
2449 => true,
2450 => true,
2473 => true,
2481 => true,
2483 => true,
2484 => true,
2485 => true,
2490 => true,
2491 => true,
2501 => true,
2502 => true,
2505 => true,
2506 => true,
2511 => true,
2512 => true,
2513 => true,
2514 => true,
2515 => true,
2516 => true,
2517 => true,
2518 => true,
2520 => true,
2521 => true,
2522 => true,
2523 => true,
2526 => true,
2532 => true,
2533 => true,
2559 => true,
2560 => true,
2564 => true,
2571 => true,
2572 => true,
2573 => true,
2574 => true,
2577 => true,
2578 => true,
2601 => true,
2609 => true,
2612 => true,
2615 => true,
2618 => true,
2619 => true,
2621 => true,
2627 => true,
2628 => true,
2629 => true,
2630 => true,
2633 => true,
2634 => true,
2638 => true,
2639 => true,
2640 => true,
2642 => true,
2643 => true,
2644 => true,
2645 => true,
2646 => true,
2647 => true,
2648 => true,
2653 => true,
2655 => true,
2656 => true,
2657 => true,
2658 => true,
2659 => true,
2660 => true,
2661 => true,
2679 => true,
2680 => true,
2681 => true,
2682 => true,
2683 => true,
2684 => true,
2685 => true,
2686 => true,
2687 => true,
2688 => true,
2692 => true,
2702 => true,
2706 => true,
2729 => true,
2737 => true,
2740 => true,
2746 => true,
2747 => true,
2758 => true,
2762 => true,
2766 => true,
2767 => true,
2769 => true,
2770 => true,
2771 => true,
2772 => true,
2773 => true,
2774 => true,
2775 => true,
2776 => true,
2777 => true,
2778 => true,
2779 => true,
2780 => true,
2781 => true,
2782 => true,
2783 => true,
2788 => true,
2789 => true,
2802 => true,
2803 => true,
2804 => true,
2805 => true,
2806 => true,
2807 => true,
2808 => true,
2816 => true,
2820 => true,
2829 => true,
2830 => true,
2833 => true,
2834 => true,
2857 => true,
2865 => true,
2868 => true,
2874 => true,
2875 => true,
2885 => true,
2886 => true,
2889 => true,
2890 => true,
2894 => true,
2895 => true,
2896 => true,
2897 => true,
2898 => true,
2899 => true,
2900 => true,
2904 => true,
2905 => true,
2906 => true,
2907 => true,
2910 => true,
2916 => true,
2917 => true,
2936 => true,
2937 => true,
2938 => true,
2939 => true,
2940 => true,
2941 => true,
2942 => true,
2943 => true,
2944 => true,
2945 => true,
2948 => true,
2955 => true,
2956 => true,
2957 => true,
2961 => true,
2966 => true,
2967 => true,
2968 => true,
2971 => true,
2973 => true,
2976 => true,
2977 => true,
2978 => true,
2981 => true,
2982 => true,
2983 => true,
2987 => true,
2988 => true,
2989 => true,
3002 => true,
3003 => true,
3004 => true,
3005 => true,
3011 => true,
3012 => true,
3013 => true,
3017 => true,
3022 => true,
3023 => true,
3025 => true,
3026 => true,
3027 => true,
3028 => true,
3029 => true,
3030 => true,
3032 => true,
3033 => true,
3034 => true,
3035 => true,
3036 => true,
3037 => true,
3038 => true,
3039 => true,
3040 => true,
3041 => true,
3042 => true,
3043 => true,
3044 => true,
3045 => true,
3067 => true,
3068 => true,
3069 => true,
3070 => true,
3071 => true,
3085 => true,
3089 => true,
3113 => true,
3130 => true,
3131 => true,
3132 => true,
3141 => true,
3145 => true,
3150 => true,
3151 => true,
3152 => true,
3153 => true,
3154 => true,
3155 => true,
3156 => true,
3159 => true,
3163 => true,
3164 => true,
3165 => true,
3166 => true,
3167 => true,
3172 => true,
3173 => true,
3184 => true,
3185 => true,
3186 => true,
3187 => true,
3188 => true,
3189 => true,
3190 => true,
3213 => true,
3217 => true,
3241 => true,
3252 => true,
3258 => true,
3259 => true,
3269 => true,
3273 => true,
3278 => true,
3279 => true,
3280 => true,
3281 => true,
3282 => true,
3283 => true,
3284 => true,
3287 => true,
3288 => true,
3289 => true,
3290 => true,
3291 => true,
3292 => true,
3293 => true,
3295 => true,
3300 => true,
3301 => true,
3312 => true,
3315 => true,
3316 => true,
3317 => true,
3318 => true,
3319 => true,
3320 => true,
3321 => true,
3322 => true,
3323 => true,
3324 => true,
3325 => true,
3326 => true,
3327 => true,
3341 => true,
3345 => true,
3397 => true,
3401 => true,
3408 => true,
3409 => true,
3410 => true,
3411 => true,
3428 => true,
3429 => true,
3456 => true,
3460 => true,
3479 => true,
3480 => true,
3481 => true,
3506 => true,
3516 => true,
3518 => true,
3519 => true,
3527 => true,
3528 => true,
3529 => true,
3531 => true,
3532 => true,
3533 => true,
3534 => true,
3541 => true,
3543 => true,
3552 => true,
3553 => true,
3554 => true,
3555 => true,
3556 => true,
3557 => true,
3568 => true,
3569 => true,
3573 => true,
3574 => true,
3575 => true,
3576 => true,
3577 => true,
3578 => true,
3579 => true,
3580 => true,
3581 => true,
3582 => true,
3583 => true,
3584 => true,
3643 => true,
3644 => true,
3645 => true,
3646 => true,
3715 => true,
3717 => true,
3723 => true,
3748 => true,
3750 => true,
3774 => true,
3775 => true,
3781 => true,
3783 => true,
3790 => true,
3791 => true,
3802 => true,
3803 => true,
3912 => true,
3949 => true,
3950 => true,
3951 => true,
3952 => true,
3992 => true,
4029 => true,
4045 => true,
4294 => true,
4296 => true,
4297 => true,
4298 => true,
4299 => true,
4300 => true,
4302 => true,
4303 => true,
4447 => true,
4448 => true,
4681 => true,
4686 => true,
4687 => true,
4695 => true,
4697 => true,
4702 => true,
4703 => true,
4745 => true,
4750 => true,
4751 => true,
4785 => true,
4790 => true,
4791 => true,
4799 => true,
4801 => true,
4806 => true,
4807 => true,
4823 => true,
4881 => true,
4886 => true,
4887 => true,
4955 => true,
4956 => true,
4989 => true,
4990 => true,
4991 => true,
5018 => true,
5019 => true,
5020 => true,
5021 => true,
5022 => true,
5023 => true,
5110 => true,
5111 => true,
5118 => true,
5119 => true,
5760 => true,
5789 => true,
5790 => true,
5791 => true,
5881 => true,
5882 => true,
5883 => true,
5884 => true,
5885 => true,
5886 => true,
5887 => true,
5901 => true,
5909 => true,
5910 => true,
5911 => true,
5912 => true,
5913 => true,
5914 => true,
5915 => true,
5916 => true,
5917 => true,
5918 => true,
5919 => true,
5943 => true,
5944 => true,
5945 => true,
5946 => true,
5947 => true,
5948 => true,
5949 => true,
5950 => true,
5951 => true,
5972 => true,
5973 => true,
5974 => true,
5975 => true,
5976 => true,
5977 => true,
5978 => true,
5979 => true,
5980 => true,
5981 => true,
5982 => true,
5983 => true,
5997 => true,
6001 => true,
6004 => true,
6005 => true,
6006 => true,
6007 => true,
6008 => true,
6009 => true,
6010 => true,
6011 => true,
6012 => true,
6013 => true,
6014 => true,
6015 => true,
6068 => true,
6069 => true,
6110 => true,
6111 => true,
6122 => true,
6123 => true,
6124 => true,
6125 => true,
6126 => true,
6127 => true,
6138 => true,
6139 => true,
6140 => true,
6141 => true,
6142 => true,
6143 => true,
6150 => true,
6158 => true,
6159 => true,
6170 => true,
6171 => true,
6172 => true,
6173 => true,
6174 => true,
6175 => true,
6265 => true,
6266 => true,
6267 => true,
6268 => true,
6269 => true,
6270 => true,
6271 => true,
6315 => true,
6316 => true,
6317 => true,
6318 => true,
6319 => true,
6390 => true,
6391 => true,
6392 => true,
6393 => true,
6394 => true,
6395 => true,
6396 => true,
6397 => true,
6398 => true,
6399 => true,
6431 => true,
6444 => true,
6445 => true,
6446 => true,
6447 => true,
6460 => true,
6461 => true,
6462 => true,
6463 => true,
6465 => true,
6466 => true,
6467 => true,
6510 => true,
6511 => true,
6517 => true,
6518 => true,
6519 => true,
6520 => true,
6521 => true,
6522 => true,
6523 => true,
6524 => true,
6525 => true,
6526 => true,
6527 => true,
6572 => true,
6573 => true,
6574 => true,
6575 => true,
6602 => true,
6603 => true,
6604 => true,
6605 => true,
6606 => true,
6607 => true,
6619 => true,
6620 => true,
6621 => true,
6684 => true,
6685 => true,
6751 => true,
6781 => true,
6782 => true,
6794 => true,
6795 => true,
6796 => true,
6797 => true,
6798 => true,
6799 => true,
6810 => true,
6811 => true,
6812 => true,
6813 => true,
6814 => true,
6815 => true,
6830 => true,
6831 => true,
6988 => true,
6989 => true,
6990 => true,
6991 => true,
7037 => true,
7038 => true,
7039 => true,
7156 => true,
7157 => true,
7158 => true,
7159 => true,
7160 => true,
7161 => true,
7162 => true,
7163 => true,
7224 => true,
7225 => true,
7226 => true,
7242 => true,
7243 => true,
7244 => true,
7305 => true,
7306 => true,
7307 => true,
7308 => true,
7309 => true,
7310 => true,
7311 => true,
7355 => true,
7356 => true,
7368 => true,
7369 => true,
7370 => true,
7371 => true,
7372 => true,
7373 => true,
7374 => true,
7375 => true,
7419 => true,
7420 => true,
7421 => true,
7422 => true,
7423 => true,
7674 => true,
7958 => true,
7959 => true,
7966 => true,
7967 => true,
8006 => true,
8007 => true,
8014 => true,
8015 => true,
8024 => true,
8026 => true,
8028 => true,
8030 => true,
8062 => true,
8063 => true,
8117 => true,
8133 => true,
8148 => true,
8149 => true,
8156 => true,
8176 => true,
8177 => true,
8181 => true,
8191 => true,
8206 => true,
8207 => true,
8228 => true,
8229 => true,
8230 => true,
8232 => true,
8233 => true,
8234 => true,
8235 => true,
8236 => true,
8237 => true,
8238 => true,
8289 => true,
8290 => true,
8291 => true,
8293 => true,
8294 => true,
8295 => true,
8296 => true,
8297 => true,
8298 => true,
8299 => true,
8300 => true,
8301 => true,
8302 => true,
8303 => true,
8306 => true,
8307 => true,
8335 => true,
8349 => true,
8350 => true,
8351 => true,
8384 => true,
8385 => true,
8386 => true,
8387 => true,
8388 => true,
8389 => true,
8390 => true,
8391 => true,
8392 => true,
8393 => true,
8394 => true,
8395 => true,
8396 => true,
8397 => true,
8398 => true,
8399 => true,
8433 => true,
8434 => true,
8435 => true,
8436 => true,
8437 => true,
8438 => true,
8439 => true,
8440 => true,
8441 => true,
8442 => true,
8443 => true,
8444 => true,
8445 => true,
8446 => true,
8447 => true,
8498 => true,
8579 => true,
8588 => true,
8589 => true,
8590 => true,
8591 => true,
9255 => true,
9256 => true,
9257 => true,
9258 => true,
9259 => true,
9260 => true,
9261 => true,
9262 => true,
9263 => true,
9264 => true,
9265 => true,
9266 => true,
9267 => true,
9268 => true,
9269 => true,
9270 => true,
9271 => true,
9272 => true,
9273 => true,
9274 => true,
9275 => true,
9276 => true,
9277 => true,
9278 => true,
9279 => true,
9291 => true,
9292 => true,
9293 => true,
9294 => true,
9295 => true,
9296 => true,
9297 => true,
9298 => true,
9299 => true,
9300 => true,
9301 => true,
9302 => true,
9303 => true,
9304 => true,
9305 => true,
9306 => true,
9307 => true,
9308 => true,
9309 => true,
9310 => true,
9311 => true,
9352 => true,
9353 => true,
9354 => true,
9355 => true,
9356 => true,
9357 => true,
9358 => true,
9359 => true,
9360 => true,
9361 => true,
9362 => true,
9363 => true,
9364 => true,
9365 => true,
9366 => true,
9367 => true,
9368 => true,
9369 => true,
9370 => true,
9371 => true,
11124 => true,
11125 => true,
11158 => true,
11311 => true,
11359 => true,
11508 => true,
11509 => true,
11510 => true,
11511 => true,
11512 => true,
11558 => true,
11560 => true,
11561 => true,
11562 => true,
11563 => true,
11564 => true,
11566 => true,
11567 => true,
11624 => true,
11625 => true,
11626 => true,
11627 => true,
11628 => true,
11629 => true,
11630 => true,
11633 => true,
11634 => true,
11635 => true,
11636 => true,
11637 => true,
11638 => true,
11639 => true,
11640 => true,
11641 => true,
11642 => true,
11643 => true,
11644 => true,
11645 => true,
11646 => true,
11671 => true,
11672 => true,
11673 => true,
11674 => true,
11675 => true,
11676 => true,
11677 => true,
11678 => true,
11679 => true,
11687 => true,
11695 => true,
11703 => true,
11711 => true,
11719 => true,
11727 => true,
11735 => true,
11743 => true,
11930 => true,
12020 => true,
12021 => true,
12022 => true,
12023 => true,
12024 => true,
12025 => true,
12026 => true,
12027 => true,
12028 => true,
12029 => true,
12030 => true,
12031 => true,
12246 => true,
12247 => true,
12248 => true,
12249 => true,
12250 => true,
12251 => true,
12252 => true,
12253 => true,
12254 => true,
12255 => true,
12256 => true,
12257 => true,
12258 => true,
12259 => true,
12260 => true,
12261 => true,
12262 => true,
12263 => true,
12264 => true,
12265 => true,
12266 => true,
12267 => true,
12268 => true,
12269 => true,
12270 => true,
12271 => true,
12272 => true,
12273 => true,
12274 => true,
12275 => true,
12276 => true,
12277 => true,
12278 => true,
12279 => true,
12280 => true,
12281 => true,
12282 => true,
12283 => true,
12284 => true,
12285 => true,
12286 => true,
12287 => true,
12352 => true,
12439 => true,
12440 => true,
12544 => true,
12545 => true,
12546 => true,
12547 => true,
12548 => true,
12592 => true,
12644 => true,
12687 => true,
12772 => true,
12773 => true,
12774 => true,
12775 => true,
12776 => true,
12777 => true,
12778 => true,
12779 => true,
12780 => true,
12781 => true,
12782 => true,
12783 => true,
12831 => true,
13250 => true,
13255 => true,
13272 => true,
40957 => true,
40958 => true,
40959 => true,
42125 => true,
42126 => true,
42127 => true,
42183 => true,
42184 => true,
42185 => true,
42186 => true,
42187 => true,
42188 => true,
42189 => true,
42190 => true,
42191 => true,
42540 => true,
42541 => true,
42542 => true,
42543 => true,
42544 => true,
42545 => true,
42546 => true,
42547 => true,
42548 => true,
42549 => true,
42550 => true,
42551 => true,
42552 => true,
42553 => true,
42554 => true,
42555 => true,
42556 => true,
42557 => true,
42558 => true,
42559 => true,
42744 => true,
42745 => true,
42746 => true,
42747 => true,
42748 => true,
42749 => true,
42750 => true,
42751 => true,
42944 => true,
42945 => true,
43053 => true,
43054 => true,
43055 => true,
43066 => true,
43067 => true,
43068 => true,
43069 => true,
43070 => true,
43071 => true,
43128 => true,
43129 => true,
43130 => true,
43131 => true,
43132 => true,
43133 => true,
43134 => true,
43135 => true,
43206 => true,
43207 => true,
43208 => true,
43209 => true,
43210 => true,
43211 => true,
43212 => true,
43213 => true,
43226 => true,
43227 => true,
43228 => true,
43229 => true,
43230 => true,
43231 => true,
43348 => true,
43349 => true,
43350 => true,
43351 => true,
43352 => true,
43353 => true,
43354 => true,
43355 => true,
43356 => true,
43357 => true,
43358 => true,
43389 => true,
43390 => true,
43391 => true,
43470 => true,
43482 => true,
43483 => true,
43484 => true,
43485 => true,
43519 => true,
43575 => true,
43576 => true,
43577 => true,
43578 => true,
43579 => true,
43580 => true,
43581 => true,
43582 => true,
43583 => true,
43598 => true,
43599 => true,
43610 => true,
43611 => true,
43715 => true,
43716 => true,
43717 => true,
43718 => true,
43719 => true,
43720 => true,
43721 => true,
43722 => true,
43723 => true,
43724 => true,
43725 => true,
43726 => true,
43727 => true,
43728 => true,
43729 => true,
43730 => true,
43731 => true,
43732 => true,
43733 => true,
43734 => true,
43735 => true,
43736 => true,
43737 => true,
43738 => true,
43767 => true,
43768 => true,
43769 => true,
43770 => true,
43771 => true,
43772 => true,
43773 => true,
43774 => true,
43775 => true,
43776 => true,
43783 => true,
43784 => true,
43791 => true,
43792 => true,
43799 => true,
43800 => true,
43801 => true,
43802 => true,
43803 => true,
43804 => true,
43805 => true,
43806 => true,
43807 => true,
43815 => true,
43823 => true,
43884 => true,
43885 => true,
43886 => true,
43887 => true,
44014 => true,
44015 => true,
44026 => true,
44027 => true,
44028 => true,
44029 => true,
44030 => true,
44031 => true,
55204 => true,
55205 => true,
55206 => true,
55207 => true,
55208 => true,
55209 => true,
55210 => true,
55211 => true,
55212 => true,
55213 => true,
55214 => true,
55215 => true,
55239 => true,
55240 => true,
55241 => true,
55242 => true,
55292 => true,
55293 => true,
55294 => true,
55295 => true,
64110 => true,
64111 => true,
64263 => true,
64264 => true,
64265 => true,
64266 => true,
64267 => true,
64268 => true,
64269 => true,
64270 => true,
64271 => true,
64272 => true,
64273 => true,
64274 => true,
64280 => true,
64281 => true,
64282 => true,
64283 => true,
64284 => true,
64311 => true,
64317 => true,
64319 => true,
64322 => true,
64325 => true,
64450 => true,
64451 => true,
64452 => true,
64453 => true,
64454 => true,
64455 => true,
64456 => true,
64457 => true,
64458 => true,
64459 => true,
64460 => true,
64461 => true,
64462 => true,
64463 => true,
64464 => true,
64465 => true,
64466 => true,
64832 => true,
64833 => true,
64834 => true,
64835 => true,
64836 => true,
64837 => true,
64838 => true,
64839 => true,
64840 => true,
64841 => true,
64842 => true,
64843 => true,
64844 => true,
64845 => true,
64846 => true,
64847 => true,
64912 => true,
64913 => true,
64968 => true,
64969 => true,
64970 => true,
64971 => true,
64972 => true,
64973 => true,
64974 => true,
64975 => true,
65022 => true,
65023 => true,
65042 => true,
65049 => true,
65050 => true,
65051 => true,
65052 => true,
65053 => true,
65054 => true,
65055 => true,
65072 => true,
65106 => true,
65107 => true,
65127 => true,
65132 => true,
65133 => true,
65134 => true,
65135 => true,
65141 => true,
65277 => true,
65278 => true,
65280 => true,
65440 => true,
65471 => true,
65472 => true,
65473 => true,
65480 => true,
65481 => true,
65488 => true,
65489 => true,
65496 => true,
65497 => true,
65501 => true,
65502 => true,
65503 => true,
65511 => true,
65519 => true,
65520 => true,
65521 => true,
65522 => true,
65523 => true,
65524 => true,
65525 => true,
65526 => true,
65527 => true,
65528 => true,
65529 => true,
65530 => true,
65531 => true,
65532 => true,
65533 => true,
65534 => true,
65535 => true,
65548 => true,
65575 => true,
65595 => true,
65598 => true,
65614 => true,
65615 => true,
65787 => true,
65788 => true,
65789 => true,
65790 => true,
65791 => true,
65795 => true,
65796 => true,
65797 => true,
65798 => true,
65844 => true,
65845 => true,
65846 => true,
65935 => true,
65949 => true,
65950 => true,
65951 => true,
66205 => true,
66206 => true,
66207 => true,
66257 => true,
66258 => true,
66259 => true,
66260 => true,
66261 => true,
66262 => true,
66263 => true,
66264 => true,
66265 => true,
66266 => true,
66267 => true,
66268 => true,
66269 => true,
66270 => true,
66271 => true,
66300 => true,
66301 => true,
66302 => true,
66303 => true,
66340 => true,
66341 => true,
66342 => true,
66343 => true,
66344 => true,
66345 => true,
66346 => true,
66347 => true,
66348 => true,
66379 => true,
66380 => true,
66381 => true,
66382 => true,
66383 => true,
66427 => true,
66428 => true,
66429 => true,
66430 => true,
66431 => true,
66462 => true,
66500 => true,
66501 => true,
66502 => true,
66503 => true,
66718 => true,
66719 => true,
66730 => true,
66731 => true,
66732 => true,
66733 => true,
66734 => true,
66735 => true,
66772 => true,
66773 => true,
66774 => true,
66775 => true,
66812 => true,
66813 => true,
66814 => true,
66815 => true,
66856 => true,
66857 => true,
66858 => true,
66859 => true,
66860 => true,
66861 => true,
66862 => true,
66863 => true,
66916 => true,
66917 => true,
66918 => true,
66919 => true,
66920 => true,
66921 => true,
66922 => true,
66923 => true,
66924 => true,
66925 => true,
66926 => true,
67383 => true,
67384 => true,
67385 => true,
67386 => true,
67387 => true,
67388 => true,
67389 => true,
67390 => true,
67391 => true,
67414 => true,
67415 => true,
67416 => true,
67417 => true,
67418 => true,
67419 => true,
67420 => true,
67421 => true,
67422 => true,
67423 => true,
67590 => true,
67591 => true,
67593 => true,
67638 => true,
67641 => true,
67642 => true,
67643 => true,
67645 => true,
67646 => true,
67670 => true,
67743 => true,
67744 => true,
67745 => true,
67746 => true,
67747 => true,
67748 => true,
67749 => true,
67750 => true,
67827 => true,
67830 => true,
67831 => true,
67832 => true,
67833 => true,
67834 => true,
67868 => true,
67869 => true,
67870 => true,
67898 => true,
67899 => true,
67900 => true,
67901 => true,
67902 => true,
68024 => true,
68025 => true,
68026 => true,
68027 => true,
68048 => true,
68049 => true,
68100 => true,
68103 => true,
68104 => true,
68105 => true,
68106 => true,
68107 => true,
68116 => true,
68120 => true,
68150 => true,
68151 => true,
68155 => true,
68156 => true,
68157 => true,
68158 => true,
68169 => true,
68170 => true,
68171 => true,
68172 => true,
68173 => true,
68174 => true,
68175 => true,
68185 => true,
68186 => true,
68187 => true,
68188 => true,
68189 => true,
68190 => true,
68191 => true,
68327 => true,
68328 => true,
68329 => true,
68330 => true,
68343 => true,
68344 => true,
68345 => true,
68346 => true,
68347 => true,
68348 => true,
68349 => true,
68350 => true,
68351 => true,
68406 => true,
68407 => true,
68408 => true,
68438 => true,
68439 => true,
68467 => true,
68468 => true,
68469 => true,
68470 => true,
68471 => true,
68498 => true,
68499 => true,
68500 => true,
68501 => true,
68502 => true,
68503 => true,
68504 => true,
68509 => true,
68510 => true,
68511 => true,
68512 => true,
68513 => true,
68514 => true,
68515 => true,
68516 => true,
68517 => true,
68518 => true,
68519 => true,
68520 => true,
68787 => true,
68788 => true,
68789 => true,
68790 => true,
68791 => true,
68792 => true,
68793 => true,
68794 => true,
68795 => true,
68796 => true,
68797 => true,
68798 => true,
68799 => true,
68851 => true,
68852 => true,
68853 => true,
68854 => true,
68855 => true,
68856 => true,
68857 => true,
68904 => true,
68905 => true,
68906 => true,
68907 => true,
68908 => true,
68909 => true,
68910 => true,
68911 => true,
69247 => true,
69290 => true,
69294 => true,
69295 => true,
69416 => true,
69417 => true,
69418 => true,
69419 => true,
69420 => true,
69421 => true,
69422 => true,
69423 => true,
69580 => true,
69581 => true,
69582 => true,
69583 => true,
69584 => true,
69585 => true,
69586 => true,
69587 => true,
69588 => true,
69589 => true,
69590 => true,
69591 => true,
69592 => true,
69593 => true,
69594 => true,
69595 => true,
69596 => true,
69597 => true,
69598 => true,
69599 => true,
69623 => true,
69624 => true,
69625 => true,
69626 => true,
69627 => true,
69628 => true,
69629 => true,
69630 => true,
69631 => true,
69710 => true,
69711 => true,
69712 => true,
69713 => true,
69744 => true,
69745 => true,
69746 => true,
69747 => true,
69748 => true,
69749 => true,
69750 => true,
69751 => true,
69752 => true,
69753 => true,
69754 => true,
69755 => true,
69756 => true,
69757 => true,
69758 => true,
69821 => true,
69826 => true,
69827 => true,
69828 => true,
69829 => true,
69830 => true,
69831 => true,
69832 => true,
69833 => true,
69834 => true,
69835 => true,
69836 => true,
69837 => true,
69838 => true,
69839 => true,
69865 => true,
69866 => true,
69867 => true,
69868 => true,
69869 => true,
69870 => true,
69871 => true,
69882 => true,
69883 => true,
69884 => true,
69885 => true,
69886 => true,
69887 => true,
69941 => true,
69960 => true,
69961 => true,
69962 => true,
69963 => true,
69964 => true,
69965 => true,
69966 => true,
69967 => true,
70007 => true,
70008 => true,
70009 => true,
70010 => true,
70011 => true,
70012 => true,
70013 => true,
70014 => true,
70015 => true,
70112 => true,
70133 => true,
70134 => true,
70135 => true,
70136 => true,
70137 => true,
70138 => true,
70139 => true,
70140 => true,
70141 => true,
70142 => true,
70143 => true,
70162 => true,
70279 => true,
70281 => true,
70286 => true,
70302 => true,
70314 => true,
70315 => true,
70316 => true,
70317 => true,
70318 => true,
70319 => true,
70379 => true,
70380 => true,
70381 => true,
70382 => true,
70383 => true,
70394 => true,
70395 => true,
70396 => true,
70397 => true,
70398 => true,
70399 => true,
70404 => true,
70413 => true,
70414 => true,
70417 => true,
70418 => true,
70441 => true,
70449 => true,
70452 => true,
70458 => true,
70469 => true,
70470 => true,
70473 => true,
70474 => true,
70478 => true,
70479 => true,
70481 => true,
70482 => true,
70483 => true,
70484 => true,
70485 => true,
70486 => true,
70488 => true,
70489 => true,
70490 => true,
70491 => true,
70492 => true,
70500 => true,
70501 => true,
70509 => true,
70510 => true,
70511 => true,
70748 => true,
70754 => true,
70755 => true,
70756 => true,
70757 => true,
70758 => true,
70759 => true,
70760 => true,
70761 => true,
70762 => true,
70763 => true,
70764 => true,
70765 => true,
70766 => true,
70767 => true,
70768 => true,
70769 => true,
70770 => true,
70771 => true,
70772 => true,
70773 => true,
70774 => true,
70775 => true,
70776 => true,
70777 => true,
70778 => true,
70779 => true,
70780 => true,
70781 => true,
70782 => true,
70783 => true,
70856 => true,
70857 => true,
70858 => true,
70859 => true,
70860 => true,
70861 => true,
70862 => true,
70863 => true,
71094 => true,
71095 => true,
71237 => true,
71238 => true,
71239 => true,
71240 => true,
71241 => true,
71242 => true,
71243 => true,
71244 => true,
71245 => true,
71246 => true,
71247 => true,
71258 => true,
71259 => true,
71260 => true,
71261 => true,
71262 => true,
71263 => true,
71277 => true,
71278 => true,
71279 => true,
71280 => true,
71281 => true,
71282 => true,
71283 => true,
71284 => true,
71285 => true,
71286 => true,
71287 => true,
71288 => true,
71289 => true,
71290 => true,
71291 => true,
71292 => true,
71293 => true,
71294 => true,
71295 => true,
71353 => true,
71354 => true,
71355 => true,
71356 => true,
71357 => true,
71358 => true,
71359 => true,
71451 => true,
71452 => true,
71468 => true,
71469 => true,
71470 => true,
71471 => true,
71923 => true,
71924 => true,
71925 => true,
71926 => true,
71927 => true,
71928 => true,
71929 => true,
71930 => true,
71931 => true,
71932 => true,
71933 => true,
71934 => true,
71943 => true,
71944 => true,
71946 => true,
71947 => true,
71956 => true,
71959 => true,
71990 => true,
71993 => true,
71994 => true,
72007 => true,
72008 => true,
72009 => true,
72010 => true,
72011 => true,
72012 => true,
72013 => true,
72014 => true,
72015 => true,
72104 => true,
72105 => true,
72152 => true,
72153 => true,
72165 => true,
72166 => true,
72167 => true,
72168 => true,
72169 => true,
72170 => true,
72171 => true,
72172 => true,
72173 => true,
72174 => true,
72175 => true,
72176 => true,
72177 => true,
72178 => true,
72179 => true,
72180 => true,
72181 => true,
72182 => true,
72183 => true,
72184 => true,
72185 => true,
72186 => true,
72187 => true,
72188 => true,
72189 => true,
72190 => true,
72191 => true,
72264 => true,
72265 => true,
72266 => true,
72267 => true,
72268 => true,
72269 => true,
72270 => true,
72271 => true,
72355 => true,
72356 => true,
72357 => true,
72358 => true,
72359 => true,
72360 => true,
72361 => true,
72362 => true,
72363 => true,
72364 => true,
72365 => true,
72366 => true,
72367 => true,
72368 => true,
72369 => true,
72370 => true,
72371 => true,
72372 => true,
72373 => true,
72374 => true,
72375 => true,
72376 => true,
72377 => true,
72378 => true,
72379 => true,
72380 => true,
72381 => true,
72382 => true,
72383 => true,
72713 => true,
72759 => true,
72774 => true,
72775 => true,
72776 => true,
72777 => true,
72778 => true,
72779 => true,
72780 => true,
72781 => true,
72782 => true,
72783 => true,
72813 => true,
72814 => true,
72815 => true,
72848 => true,
72849 => true,
72872 => true,
72967 => true,
72970 => true,
73015 => true,
73016 => true,
73017 => true,
73019 => true,
73022 => true,
73032 => true,
73033 => true,
73034 => true,
73035 => true,
73036 => true,
73037 => true,
73038 => true,
73039 => true,
73050 => true,
73051 => true,
73052 => true,
73053 => true,
73054 => true,
73055 => true,
73062 => true,
73065 => true,
73103 => true,
73106 => true,
73113 => true,
73114 => true,
73115 => true,
73116 => true,
73117 => true,
73118 => true,
73119 => true,
73649 => true,
73650 => true,
73651 => true,
73652 => true,
73653 => true,
73654 => true,
73655 => true,
73656 => true,
73657 => true,
73658 => true,
73659 => true,
73660 => true,
73661 => true,
73662 => true,
73663 => true,
73714 => true,
73715 => true,
73716 => true,
73717 => true,
73718 => true,
73719 => true,
73720 => true,
73721 => true,
73722 => true,
73723 => true,
73724 => true,
73725 => true,
73726 => true,
74863 => true,
74869 => true,
74870 => true,
74871 => true,
74872 => true,
74873 => true,
74874 => true,
74875 => true,
74876 => true,
74877 => true,
74878 => true,
74879 => true,
78895 => true,
78896 => true,
78897 => true,
78898 => true,
78899 => true,
78900 => true,
78901 => true,
78902 => true,
78903 => true,
78904 => true,
92729 => true,
92730 => true,
92731 => true,
92732 => true,
92733 => true,
92734 => true,
92735 => true,
92767 => true,
92778 => true,
92779 => true,
92780 => true,
92781 => true,
92910 => true,
92911 => true,
92918 => true,
92919 => true,
92920 => true,
92921 => true,
92922 => true,
92923 => true,
92924 => true,
92925 => true,
92926 => true,
92927 => true,
92998 => true,
92999 => true,
93000 => true,
93001 => true,
93002 => true,
93003 => true,
93004 => true,
93005 => true,
93006 => true,
93007 => true,
93018 => true,
93026 => true,
93048 => true,
93049 => true,
93050 => true,
93051 => true,
93052 => true,
94027 => true,
94028 => true,
94029 => true,
94030 => true,
94088 => true,
94089 => true,
94090 => true,
94091 => true,
94092 => true,
94093 => true,
94094 => true,
94181 => true,
94182 => true,
94183 => true,
94184 => true,
94185 => true,
94186 => true,
94187 => true,
94188 => true,
94189 => true,
94190 => true,
94191 => true,
94194 => true,
94195 => true,
94196 => true,
94197 => true,
94198 => true,
94199 => true,
94200 => true,
94201 => true,
94202 => true,
94203 => true,
94204 => true,
94205 => true,
94206 => true,
94207 => true,
100344 => true,
100345 => true,
100346 => true,
100347 => true,
100348 => true,
100349 => true,
100350 => true,
100351 => true,
110931 => true,
110932 => true,
110933 => true,
110934 => true,
110935 => true,
110936 => true,
110937 => true,
110938 => true,
110939 => true,
110940 => true,
110941 => true,
110942 => true,
110943 => true,
110944 => true,
110945 => true,
110946 => true,
110947 => true,
110952 => true,
110953 => true,
110954 => true,
110955 => true,
110956 => true,
110957 => true,
110958 => true,
110959 => true,
113771 => true,
113772 => true,
113773 => true,
113774 => true,
113775 => true,
113789 => true,
113790 => true,
113791 => true,
113801 => true,
113802 => true,
113803 => true,
113804 => true,
113805 => true,
113806 => true,
113807 => true,
113818 => true,
113819 => true,
119030 => true,
119031 => true,
119032 => true,
119033 => true,
119034 => true,
119035 => true,
119036 => true,
119037 => true,
119038 => true,
119039 => true,
119079 => true,
119080 => true,
119155 => true,
119156 => true,
119157 => true,
119158 => true,
119159 => true,
119160 => true,
119161 => true,
119162 => true,
119273 => true,
119274 => true,
119275 => true,
119276 => true,
119277 => true,
119278 => true,
119279 => true,
119280 => true,
119281 => true,
119282 => true,
119283 => true,
119284 => true,
119285 => true,
119286 => true,
119287 => true,
119288 => true,
119289 => true,
119290 => true,
119291 => true,
119292 => true,
119293 => true,
119294 => true,
119295 => true,
119540 => true,
119541 => true,
119542 => true,
119543 => true,
119544 => true,
119545 => true,
119546 => true,
119547 => true,
119548 => true,
119549 => true,
119550 => true,
119551 => true,
119639 => true,
119640 => true,
119641 => true,
119642 => true,
119643 => true,
119644 => true,
119645 => true,
119646 => true,
119647 => true,
119893 => true,
119965 => true,
119968 => true,
119969 => true,
119971 => true,
119972 => true,
119975 => true,
119976 => true,
119981 => true,
119994 => true,
119996 => true,
120004 => true,
120070 => true,
120075 => true,
120076 => true,
120085 => true,
120093 => true,
120122 => true,
120127 => true,
120133 => true,
120135 => true,
120136 => true,
120137 => true,
120145 => true,
120486 => true,
120487 => true,
120780 => true,
120781 => true,
121484 => true,
121485 => true,
121486 => true,
121487 => true,
121488 => true,
121489 => true,
121490 => true,
121491 => true,
121492 => true,
121493 => true,
121494 => true,
121495 => true,
121496 => true,
121497 => true,
121498 => true,
121504 => true,
122887 => true,
122905 => true,
122906 => true,
122914 => true,
122917 => true,
123181 => true,
123182 => true,
123183 => true,
123198 => true,
123199 => true,
123210 => true,
123211 => true,
123212 => true,
123213 => true,
123642 => true,
123643 => true,
123644 => true,
123645 => true,
123646 => true,
125125 => true,
125126 => true,
125260 => true,
125261 => true,
125262 => true,
125263 => true,
125274 => true,
125275 => true,
125276 => true,
125277 => true,
126468 => true,
126496 => true,
126499 => true,
126501 => true,
126502 => true,
126504 => true,
126515 => true,
126520 => true,
126522 => true,
126524 => true,
126525 => true,
126526 => true,
126527 => true,
126528 => true,
126529 => true,
126531 => true,
126532 => true,
126533 => true,
126534 => true,
126536 => true,
126538 => true,
126540 => true,
126544 => true,
126547 => true,
126549 => true,
126550 => true,
126552 => true,
126554 => true,
126556 => true,
126558 => true,
126560 => true,
126563 => true,
126565 => true,
126566 => true,
126571 => true,
126579 => true,
126584 => true,
126589 => true,
126591 => true,
126602 => true,
126620 => true,
126621 => true,
126622 => true,
126623 => true,
126624 => true,
126628 => true,
126634 => true,
127020 => true,
127021 => true,
127022 => true,
127023 => true,
127124 => true,
127125 => true,
127126 => true,
127127 => true,
127128 => true,
127129 => true,
127130 => true,
127131 => true,
127132 => true,
127133 => true,
127134 => true,
127135 => true,
127151 => true,
127152 => true,
127168 => true,
127184 => true,
127222 => true,
127223 => true,
127224 => true,
127225 => true,
127226 => true,
127227 => true,
127228 => true,
127229 => true,
127230 => true,
127231 => true,
127232 => true,
127491 => true,
127492 => true,
127493 => true,
127494 => true,
127495 => true,
127496 => true,
127497 => true,
127498 => true,
127499 => true,
127500 => true,
127501 => true,
127502 => true,
127503 => true,
127548 => true,
127549 => true,
127550 => true,
127551 => true,
127561 => true,
127562 => true,
127563 => true,
127564 => true,
127565 => true,
127566 => true,
127567 => true,
127570 => true,
127571 => true,
127572 => true,
127573 => true,
127574 => true,
127575 => true,
127576 => true,
127577 => true,
127578 => true,
127579 => true,
127580 => true,
127581 => true,
127582 => true,
127583 => true,
128728 => true,
128729 => true,
128730 => true,
128731 => true,
128732 => true,
128733 => true,
128734 => true,
128735 => true,
128749 => true,
128750 => true,
128751 => true,
128765 => true,
128766 => true,
128767 => true,
128884 => true,
128885 => true,
128886 => true,
128887 => true,
128888 => true,
128889 => true,
128890 => true,
128891 => true,
128892 => true,
128893 => true,
128894 => true,
128895 => true,
128985 => true,
128986 => true,
128987 => true,
128988 => true,
128989 => true,
128990 => true,
128991 => true,
129004 => true,
129005 => true,
129006 => true,
129007 => true,
129008 => true,
129009 => true,
129010 => true,
129011 => true,
129012 => true,
129013 => true,
129014 => true,
129015 => true,
129016 => true,
129017 => true,
129018 => true,
129019 => true,
129020 => true,
129021 => true,
129022 => true,
129023 => true,
129036 => true,
129037 => true,
129038 => true,
129039 => true,
129096 => true,
129097 => true,
129098 => true,
129099 => true,
129100 => true,
129101 => true,
129102 => true,
129103 => true,
129114 => true,
129115 => true,
129116 => true,
129117 => true,
129118 => true,
129119 => true,
129160 => true,
129161 => true,
129162 => true,
129163 => true,
129164 => true,
129165 => true,
129166 => true,
129167 => true,
129198 => true,
129199 => true,
129401 => true,
129484 => true,
129620 => true,
129621 => true,
129622 => true,
129623 => true,
129624 => true,
129625 => true,
129626 => true,
129627 => true,
129628 => true,
129629 => true,
129630 => true,
129631 => true,
129646 => true,
129647 => true,
129653 => true,
129654 => true,
129655 => true,
129659 => true,
129660 => true,
129661 => true,
129662 => true,
129663 => true,
129671 => true,
129672 => true,
129673 => true,
129674 => true,
129675 => true,
129676 => true,
129677 => true,
129678 => true,
129679 => true,
129705 => true,
129706 => true,
129707 => true,
129708 => true,
129709 => true,
129710 => true,
129711 => true,
129719 => true,
129720 => true,
129721 => true,
129722 => true,
129723 => true,
129724 => true,
129725 => true,
129726 => true,
129727 => true,
129731 => true,
129732 => true,
129733 => true,
129734 => true,
129735 => true,
129736 => true,
129737 => true,
129738 => true,
129739 => true,
129740 => true,
129741 => true,
129742 => true,
129743 => true,
129939 => true,
131070 => true,
131071 => true,
177973 => true,
177974 => true,
177975 => true,
177976 => true,
177977 => true,
177978 => true,
177979 => true,
177980 => true,
177981 => true,
177982 => true,
177983 => true,
178206 => true,
178207 => true,
183970 => true,
183971 => true,
183972 => true,
183973 => true,
183974 => true,
183975 => true,
183976 => true,
183977 => true,
183978 => true,
183979 => true,
183980 => true,
183981 => true,
183982 => true,
183983 => true,
194664 => true,
194676 => true,
194847 => true,
194911 => true,
195007 => true,
196606 => true,
196607 => true,
262142 => true,
262143 => true,
327678 => true,
327679 => true,
393214 => true,
393215 => true,
458750 => true,
458751 => true,
524286 => true,
524287 => true,
589822 => true,
589823 => true,
655358 => true,
655359 => true,
720894 => true,
720895 => true,
786430 => true,
786431 => true,
851966 => true,
851967 => true,
917502 => true,
917503 => true,
917504 => true,
917505 => true,
917506 => true,
917507 => true,
917508 => true,
917509 => true,
917510 => true,
917511 => true,
917512 => true,
917513 => true,
917514 => true,
917515 => true,
917516 => true,
917517 => true,
917518 => true,
917519 => true,
917520 => true,
917521 => true,
917522 => true,
917523 => true,
917524 => true,
917525 => true,
917526 => true,
917527 => true,
917528 => true,
917529 => true,
917530 => true,
917531 => true,
917532 => true,
917533 => true,
917534 => true,
917535 => true,
983038 => true,
983039 => true,
1048574 => true,
1048575 => true,
1114110 => true,
1114111 => true,
);
@@ -0,0 +1,308 @@
<?php
return array (
160 => ' ',
168 => ' ̈',
175 => ' ̄',
180 => ' ́',
184 => ' ̧',
728 => ' ̆',
729 => ' ̇',
730 => ' ̊',
731 => ' ̨',
732 => ' ̃',
733 => ' ̋',
890 => ' ι',
894 => ';',
900 => ' ́',
901 => ' ̈́',
8125 => ' ̓',
8127 => ' ̓',
8128 => ' ͂',
8129 => ' ̈͂',
8141 => ' ̓̀',
8142 => ' ̓́',
8143 => ' ̓͂',
8157 => ' ̔̀',
8158 => ' ̔́',
8159 => ' ̔͂',
8173 => ' ̈̀',
8174 => ' ̈́',
8175 => '`',
8189 => ' ́',
8190 => ' ̔',
8192 => ' ',
8193 => ' ',
8194 => ' ',
8195 => ' ',
8196 => ' ',
8197 => ' ',
8198 => ' ',
8199 => ' ',
8200 => ' ',
8201 => ' ',
8202 => ' ',
8215 => ' ̳',
8239 => ' ',
8252 => '!!',
8254 => ' ̅',
8263 => '??',
8264 => '?!',
8265 => '!?',
8287 => ' ',
8314 => '+',
8316 => '=',
8317 => '(',
8318 => ')',
8330 => '+',
8332 => '=',
8333 => '(',
8334 => ')',
8448 => 'a/c',
8449 => 'a/s',
8453 => 'c/o',
8454 => 'c/u',
9332 => '(1)',
9333 => '(2)',
9334 => '(3)',
9335 => '(4)',
9336 => '(5)',
9337 => '(6)',
9338 => '(7)',
9339 => '(8)',
9340 => '(9)',
9341 => '(10)',
9342 => '(11)',
9343 => '(12)',
9344 => '(13)',
9345 => '(14)',
9346 => '(15)',
9347 => '(16)',
9348 => '(17)',
9349 => '(18)',
9350 => '(19)',
9351 => '(20)',
9372 => '(a)',
9373 => '(b)',
9374 => '(c)',
9375 => '(d)',
9376 => '(e)',
9377 => '(f)',
9378 => '(g)',
9379 => '(h)',
9380 => '(i)',
9381 => '(j)',
9382 => '(k)',
9383 => '(l)',
9384 => '(m)',
9385 => '(n)',
9386 => '(o)',
9387 => '(p)',
9388 => '(q)',
9389 => '(r)',
9390 => '(s)',
9391 => '(t)',
9392 => '(u)',
9393 => '(v)',
9394 => '(w)',
9395 => '(x)',
9396 => '(y)',
9397 => '(z)',
10868 => '::=',
10869 => '==',
10870 => '===',
12288 => ' ',
12443 => ' ゙',
12444 => ' ゚',
12800 => '(ᄀ)',
12801 => '(ᄂ)',
12802 => '(ᄃ)',
12803 => '(ᄅ)',
12804 => '(ᄆ)',
12805 => '(ᄇ)',
12806 => '(ᄉ)',
12807 => '(ᄋ)',
12808 => '(ᄌ)',
12809 => '(ᄎ)',
12810 => '(ᄏ)',
12811 => '(ᄐ)',
12812 => '(ᄑ)',
12813 => '(ᄒ)',
12814 => '(가)',
12815 => '(나)',
12816 => '(다)',
12817 => '(라)',
12818 => '(마)',
12819 => '(바)',
12820 => '(사)',
12821 => '(아)',
12822 => '(자)',
12823 => '(차)',
12824 => '(카)',
12825 => '(타)',
12826 => '(파)',
12827 => '(하)',
12828 => '(주)',
12829 => '(오전)',
12830 => '(오후)',
12832 => '(一)',
12833 => '(二)',
12834 => '(三)',
12835 => '(四)',
12836 => '(五)',
12837 => '(六)',
12838 => '(七)',
12839 => '(八)',
12840 => '(九)',
12841 => '(十)',
12842 => '(月)',
12843 => '(火)',
12844 => '(水)',
12845 => '(木)',
12846 => '(金)',
12847 => '(土)',
12848 => '(日)',
12849 => '(株)',
12850 => '(有)',
12851 => '(社)',
12852 => '(名)',
12853 => '(特)',
12854 => '(財)',
12855 => '(祝)',
12856 => '(労)',
12857 => '(代)',
12858 => '(呼)',
12859 => '(学)',
12860 => '(監)',
12861 => '(企)',
12862 => '(資)',
12863 => '(協)',
12864 => '(祭)',
12865 => '(休)',
12866 => '(自)',
12867 => '(至)',
64297 => '+',
64606 => ' ٌّ',
64607 => ' ٍّ',
64608 => ' َّ',
64609 => ' ُّ',
64610 => ' ِّ',
64611 => ' ّٰ',
65018 => 'صلى الله عليه وسلم',
65019 => 'جل جلاله',
65040 => ',',
65043 => ':',
65044 => ';',
65045 => '!',
65046 => '?',
65075 => '_',
65076 => '_',
65077 => '(',
65078 => ')',
65079 => '{',
65080 => '}',
65095 => '[',
65096 => ']',
65097 => ' ̅',
65098 => ' ̅',
65099 => ' ̅',
65100 => ' ̅',
65101 => '_',
65102 => '_',
65103 => '_',
65104 => ',',
65108 => ';',
65109 => ':',
65110 => '?',
65111 => '!',
65113 => '(',
65114 => ')',
65115 => '{',
65116 => '}',
65119 => '#',
65120 => '&',
65121 => '*',
65122 => '+',
65124 => '<',
65125 => '>',
65126 => '=',
65128 => '\\',
65129 => '$',
65130 => '%',
65131 => '@',
65136 => ' ً',
65138 => ' ٌ',
65140 => ' ٍ',
65142 => ' َ',
65144 => ' ُ',
65146 => ' ِ',
65148 => ' ّ',
65150 => ' ْ',
65281 => '!',
65282 => '"',
65283 => '#',
65284 => '$',
65285 => '%',
65286 => '&',
65287 => '\'',
65288 => '(',
65289 => ')',
65290 => '*',
65291 => '+',
65292 => ',',
65295 => '/',
65306 => ':',
65307 => ';',
65308 => '<',
65309 => '=',
65310 => '>',
65311 => '?',
65312 => '@',
65339 => '[',
65340 => '\\',
65341 => ']',
65342 => '^',
65343 => '_',
65344 => '`',
65371 => '{',
65372 => '|',
65373 => '}',
65374 => '~',
65507 => ' ̄',
127233 => '0,',
127234 => '1,',
127235 => '2,',
127236 => '3,',
127237 => '4,',
127238 => '5,',
127239 => '6,',
127240 => '7,',
127241 => '8,',
127242 => '9,',
127248 => '(a)',
127249 => '(b)',
127250 => '(c)',
127251 => '(d)',
127252 => '(e)',
127253 => '(f)',
127254 => '(g)',
127255 => '(h)',
127256 => '(i)',
127257 => '(j)',
127258 => '(k)',
127259 => '(l)',
127260 => '(m)',
127261 => '(n)',
127262 => '(o)',
127263 => '(p)',
127264 => '(q)',
127265 => '(r)',
127266 => '(s)',
127267 => '(t)',
127268 => '(u)',
127269 => '(v)',
127270 => '(w)',
127271 => '(x)',
127272 => '(y)',
127273 => '(z)',
);
@@ -0,0 +1,71 @@
<?php
return array (
0 => true,
1 => true,
2 => true,
3 => true,
4 => true,
5 => true,
6 => true,
7 => true,
8 => true,
9 => true,
10 => true,
11 => true,
12 => true,
13 => true,
14 => true,
15 => true,
16 => true,
17 => true,
18 => true,
19 => true,
20 => true,
21 => true,
22 => true,
23 => true,
24 => true,
25 => true,
26 => true,
27 => true,
28 => true,
29 => true,
30 => true,
31 => true,
32 => true,
33 => true,
34 => true,
35 => true,
36 => true,
37 => true,
38 => true,
39 => true,
40 => true,
41 => true,
42 => true,
43 => true,
44 => true,
47 => true,
58 => true,
59 => true,
60 => true,
61 => true,
62 => true,
63 => true,
64 => true,
91 => true,
92 => true,
93 => true,
94 => true,
95 => true,
96 => true,
123 => true,
124 => true,
125 => true,
126 => true,
127 => true,
8800 => true,
8814 => true,
8815 => true,
);
@@ -0,0 +1,273 @@
<?php
return array (
173 => true,
847 => true,
6155 => true,
6156 => true,
6157 => true,
8203 => true,
8288 => true,
8292 => true,
65024 => true,
65025 => true,
65026 => true,
65027 => true,
65028 => true,
65029 => true,
65030 => true,
65031 => true,
65032 => true,
65033 => true,
65034 => true,
65035 => true,
65036 => true,
65037 => true,
65038 => true,
65039 => true,
65279 => true,
113824 => true,
113825 => true,
113826 => true,
113827 => true,
917760 => true,
917761 => true,
917762 => true,
917763 => true,
917764 => true,
917765 => true,
917766 => true,
917767 => true,
917768 => true,
917769 => true,
917770 => true,
917771 => true,
917772 => true,
917773 => true,
917774 => true,
917775 => true,
917776 => true,
917777 => true,
917778 => true,
917779 => true,
917780 => true,
917781 => true,
917782 => true,
917783 => true,
917784 => true,
917785 => true,
917786 => true,
917787 => true,
917788 => true,
917789 => true,
917790 => true,
917791 => true,
917792 => true,
917793 => true,
917794 => true,
917795 => true,
917796 => true,
917797 => true,
917798 => true,
917799 => true,
917800 => true,
917801 => true,
917802 => true,
917803 => true,
917804 => true,
917805 => true,
917806 => true,
917807 => true,
917808 => true,
917809 => true,
917810 => true,
917811 => true,
917812 => true,
917813 => true,
917814 => true,
917815 => true,
917816 => true,
917817 => true,
917818 => true,
917819 => true,
917820 => true,
917821 => true,
917822 => true,
917823 => true,
917824 => true,
917825 => true,
917826 => true,
917827 => true,
917828 => true,
917829 => true,
917830 => true,
917831 => true,
917832 => true,
917833 => true,
917834 => true,
917835 => true,
917836 => true,
917837 => true,
917838 => true,
917839 => true,
917840 => true,
917841 => true,
917842 => true,
917843 => true,
917844 => true,
917845 => true,
917846 => true,
917847 => true,
917848 => true,
917849 => true,
917850 => true,
917851 => true,
917852 => true,
917853 => true,
917854 => true,
917855 => true,
917856 => true,
917857 => true,
917858 => true,
917859 => true,
917860 => true,
917861 => true,
917862 => true,
917863 => true,
917864 => true,
917865 => true,
917866 => true,
917867 => true,
917868 => true,
917869 => true,
917870 => true,
917871 => true,
917872 => true,
917873 => true,
917874 => true,
917875 => true,
917876 => true,
917877 => true,
917878 => true,
917879 => true,
917880 => true,
917881 => true,
917882 => true,
917883 => true,
917884 => true,
917885 => true,
917886 => true,
917887 => true,
917888 => true,
917889 => true,
917890 => true,
917891 => true,
917892 => true,
917893 => true,
917894 => true,
917895 => true,
917896 => true,
917897 => true,
917898 => true,
917899 => true,
917900 => true,
917901 => true,
917902 => true,
917903 => true,
917904 => true,
917905 => true,
917906 => true,
917907 => true,
917908 => true,
917909 => true,
917910 => true,
917911 => true,
917912 => true,
917913 => true,
917914 => true,
917915 => true,
917916 => true,
917917 => true,
917918 => true,
917919 => true,
917920 => true,
917921 => true,
917922 => true,
917923 => true,
917924 => true,
917925 => true,
917926 => true,
917927 => true,
917928 => true,
917929 => true,
917930 => true,
917931 => true,
917932 => true,
917933 => true,
917934 => true,
917935 => true,
917936 => true,
917937 => true,
917938 => true,
917939 => true,
917940 => true,
917941 => true,
917942 => true,
917943 => true,
917944 => true,
917945 => true,
917946 => true,
917947 => true,
917948 => true,
917949 => true,
917950 => true,
917951 => true,
917952 => true,
917953 => true,
917954 => true,
917955 => true,
917956 => true,
917957 => true,
917958 => true,
917959 => true,
917960 => true,
917961 => true,
917962 => true,
917963 => true,
917964 => true,
917965 => true,
917966 => true,
917967 => true,
917968 => true,
917969 => true,
917970 => true,
917971 => true,
917972 => true,
917973 => true,
917974 => true,
917975 => true,
917976 => true,
917977 => true,
917978 => true,
917979 => true,
917980 => true,
917981 => true,
917982 => true,
917983 => true,
917984 => true,
917985 => true,
917986 => true,
917987 => true,
917988 => true,
917989 => true,
917990 => true,
917991 => true,
917992 => true,
917993 => true,
917994 => true,
917995 => true,
917996 => true,
917997 => true,
917998 => true,
917999 => true,
);
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,65 @@
<?php
return array (
2381 => 9,
2509 => 9,
2637 => 9,
2765 => 9,
2893 => 9,
3021 => 9,
3149 => 9,
3277 => 9,
3387 => 9,
3388 => 9,
3405 => 9,
3530 => 9,
3642 => 9,
3770 => 9,
3972 => 9,
4153 => 9,
4154 => 9,
5908 => 9,
5940 => 9,
6098 => 9,
6752 => 9,
6980 => 9,
7082 => 9,
7083 => 9,
7154 => 9,
7155 => 9,
11647 => 9,
43014 => 9,
43052 => 9,
43204 => 9,
43347 => 9,
43456 => 9,
43766 => 9,
44013 => 9,
68159 => 9,
69702 => 9,
69759 => 9,
69817 => 9,
69939 => 9,
69940 => 9,
70080 => 9,
70197 => 9,
70378 => 9,
70477 => 9,
70722 => 9,
70850 => 9,
71103 => 9,
71231 => 9,
71350 => 9,
71467 => 9,
71737 => 9,
71997 => 9,
71998 => 9,
72160 => 9,
72244 => 9,
72263 => 9,
72345 => 9,
72767 => 9,
73028 => 9,
73029 => 9,
73111 => 9,
);
+145
View File
@@ -0,0 +1,145 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Symfony\Polyfill\Intl\Idn as p;
if (extension_loaded('intl')) {
return;
}
if (\PHP_VERSION_ID >= 80000) {
return require __DIR__.'/bootstrap80.php';
}
if (!defined('U_IDNA_PROHIBITED_ERROR')) {
define('U_IDNA_PROHIBITED_ERROR', 66560);
}
if (!defined('U_IDNA_ERROR_START')) {
define('U_IDNA_ERROR_START', 66560);
}
if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
define('U_IDNA_UNASSIGNED_ERROR', 66561);
}
if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
define('U_IDNA_CHECK_BIDI_ERROR', 66562);
}
if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
}
if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
define('U_IDNA_ACE_PREFIX_ERROR', 66564);
}
if (!defined('U_IDNA_VERIFICATION_ERROR')) {
define('U_IDNA_VERIFICATION_ERROR', 66565);
}
if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
}
if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
}
if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
}
if (!defined('U_IDNA_ERROR_LIMIT')) {
define('U_IDNA_ERROR_LIMIT', 66569);
}
if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
}
if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
}
if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
}
if (!defined('IDNA_DEFAULT')) {
define('IDNA_DEFAULT', 0);
}
if (!defined('IDNA_ALLOW_UNASSIGNED')) {
define('IDNA_ALLOW_UNASSIGNED', 1);
}
if (!defined('IDNA_USE_STD3_RULES')) {
define('IDNA_USE_STD3_RULES', 2);
}
if (!defined('IDNA_CHECK_BIDI')) {
define('IDNA_CHECK_BIDI', 4);
}
if (!defined('IDNA_CHECK_CONTEXTJ')) {
define('IDNA_CHECK_CONTEXTJ', 8);
}
if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
}
if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
}
if (!defined('INTL_IDNA_VARIANT_2003')) {
define('INTL_IDNA_VARIANT_2003', 0);
}
if (!defined('INTL_IDNA_VARIANT_UTS46')) {
define('INTL_IDNA_VARIANT_UTS46', 1);
}
if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
define('IDNA_ERROR_EMPTY_LABEL', 1);
}
if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
define('IDNA_ERROR_LABEL_TOO_LONG', 2);
}
if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
}
if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
define('IDNA_ERROR_LEADING_HYPHEN', 8);
}
if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
define('IDNA_ERROR_TRAILING_HYPHEN', 16);
}
if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
define('IDNA_ERROR_HYPHEN_3_4', 32);
}
if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
}
if (!defined('IDNA_ERROR_DISALLOWED')) {
define('IDNA_ERROR_DISALLOWED', 128);
}
if (!defined('IDNA_ERROR_PUNYCODE')) {
define('IDNA_ERROR_PUNYCODE', 256);
}
if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
define('IDNA_ERROR_LABEL_HAS_DOT', 512);
}
if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
}
if (!defined('IDNA_ERROR_BIDI')) {
define('IDNA_ERROR_BIDI', 2048);
}
if (!defined('IDNA_ERROR_CONTEXTJ')) {
define('IDNA_ERROR_CONTEXTJ', 4096);
}
if (\PHP_VERSION_ID < 70400) {
if (!function_exists('idn_to_ascii')) {
function idn_to_ascii($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_2003, &$idna_info = null) { return p\Idn::idn_to_ascii($domain, $flags, $variant, $idna_info); }
}
if (!function_exists('idn_to_utf8')) {
function idn_to_utf8($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_2003, &$idna_info = null) { return p\Idn::idn_to_utf8($domain, $flags, $variant, $idna_info); }
}
} else {
if (!function_exists('idn_to_ascii')) {
function idn_to_ascii($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_UTS46, &$idna_info = null) { return p\Idn::idn_to_ascii($domain, $flags, $variant, $idna_info); }
}
if (!function_exists('idn_to_utf8')) {
function idn_to_utf8($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_UTS46, &$idna_info = null) { return p\Idn::idn_to_utf8($domain, $flags, $variant, $idna_info); }
}
}
+125
View File
@@ -0,0 +1,125 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Symfony\Polyfill\Intl\Idn as p;
if (!defined('U_IDNA_PROHIBITED_ERROR')) {
define('U_IDNA_PROHIBITED_ERROR', 66560);
}
if (!defined('U_IDNA_ERROR_START')) {
define('U_IDNA_ERROR_START', 66560);
}
if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
define('U_IDNA_UNASSIGNED_ERROR', 66561);
}
if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
define('U_IDNA_CHECK_BIDI_ERROR', 66562);
}
if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
}
if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
define('U_IDNA_ACE_PREFIX_ERROR', 66564);
}
if (!defined('U_IDNA_VERIFICATION_ERROR')) {
define('U_IDNA_VERIFICATION_ERROR', 66565);
}
if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
}
if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
}
if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
}
if (!defined('U_IDNA_ERROR_LIMIT')) {
define('U_IDNA_ERROR_LIMIT', 66569);
}
if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
}
if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
}
if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
}
if (!defined('IDNA_DEFAULT')) {
define('IDNA_DEFAULT', 0);
}
if (!defined('IDNA_ALLOW_UNASSIGNED')) {
define('IDNA_ALLOW_UNASSIGNED', 1);
}
if (!defined('IDNA_USE_STD3_RULES')) {
define('IDNA_USE_STD3_RULES', 2);
}
if (!defined('IDNA_CHECK_BIDI')) {
define('IDNA_CHECK_BIDI', 4);
}
if (!defined('IDNA_CHECK_CONTEXTJ')) {
define('IDNA_CHECK_CONTEXTJ', 8);
}
if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
}
if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
}
if (!defined('INTL_IDNA_VARIANT_UTS46')) {
define('INTL_IDNA_VARIANT_UTS46', 1);
}
if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
define('IDNA_ERROR_EMPTY_LABEL', 1);
}
if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
define('IDNA_ERROR_LABEL_TOO_LONG', 2);
}
if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
}
if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
define('IDNA_ERROR_LEADING_HYPHEN', 8);
}
if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
define('IDNA_ERROR_TRAILING_HYPHEN', 16);
}
if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
define('IDNA_ERROR_HYPHEN_3_4', 32);
}
if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
}
if (!defined('IDNA_ERROR_DISALLOWED')) {
define('IDNA_ERROR_DISALLOWED', 128);
}
if (!defined('IDNA_ERROR_PUNYCODE')) {
define('IDNA_ERROR_PUNYCODE', 256);
}
if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
define('IDNA_ERROR_LABEL_HAS_DOT', 512);
}
if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
}
if (!defined('IDNA_ERROR_BIDI')) {
define('IDNA_ERROR_BIDI', 2048);
}
if (!defined('IDNA_ERROR_CONTEXTJ')) {
define('IDNA_ERROR_CONTEXTJ', 4096);
}
if (!function_exists('idn_to_ascii')) {
function idn_to_ascii(?string $domain, ?int $flags = 0, ?int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false { return p\Idn::idn_to_ascii((string) $domain, (int) $flags, (int) $variant, $idna_info); }
}
if (!function_exists('idn_to_utf8')) {
function idn_to_utf8(?string $domain, ?int $flags = 0, ?int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false { return p\Idn::idn_to_utf8((string) $domain, (int) $flags, (int) $variant, $idna_info); }
}
+44
View File
@@ -0,0 +1,44 @@
{
"name": "symfony/polyfill-intl-idn",
"type": "library",
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"keywords": ["polyfill", "shim", "compatibility", "portable", "intl", "idn"],
"homepage": "https://symfony.com",
"license": "MIT",
"authors": [
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
},
{
"name": "Trevor Rowbotham",
"email": "trevor.rowbotham@pm.me"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"require": {
"php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"autoload": {
"psr-4": { "Symfony\\Polyfill\\Intl\\Idn\\": "" },
"files": [ "bootstrap.php" ]
},
"suggest": {
"ext-intl": "For best performance"
},
"minimum-stability": "dev",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
}
}