1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
punycode.php
См. документацию.
1<?php
2
4{
5 const PREFIX = 'xn--';
6
7 private static $prefixUcs4 = null;
8 private static $hyphenUcs4 = null;
9 private static $punycodePrefix = null;
10 private static $punycodePrefixUcs4 = null;
11 private static $punycodePrefixLength = null;
12
13 private $encoding;
14 private $arErrors = [];
15
17 private static $instance;
18
25 public static function GetConverter()
26 {
27 if (!isset(self::$instance))
28 {
29 $c = __CLASS__;
30 self::$instance = new $c;
31 }
32
33 return self::$instance;
34 }
35
44 public static function ToASCII($domainName, &$arErrors)
45 {
46 $arErrors = [];
47
48 $converter = self::GetConverter();
49 $result = $converter->Encode($domainName);
50
51 if ($result === false)
52 $arErrors = $converter->GetErrors();
53
54 return $result;
55 }
56
65 public static function ToUnicode($domainName, &$arErrors)
66 {
67 $arErrors = [];
68
69 $converter = self::GetConverter();
70 $result = $converter->Decode($domainName);
71
72 if ($result === false)
73 $arErrors = $converter->GetErrors();
74
75 return $result;
76 }
77
85 public static function CheckASCII($domainName)
86 {
87 $converter = self::GetConverter();
88 return $converter->IsEncoded($domainName);
89 }
90
91 public function __construct($encoding = null)
92 {
93 if (self::$punycodePrefix === null)
94 {
95 self::$punycodePrefix = "xn--";
96 self::$punycodePrefixLength = strlen(self::$punycodePrefix);
97 self::$punycodePrefixUcs4 = $this->Utf8ToUcs4(self::$punycodePrefix);
98 }
99
100 if (self::$prefixUcs4 === null)
101 self::$prefixUcs4 = $this->Utf8ToUcs4(self::PREFIX);
102
103 if (self::$hyphenUcs4 === null)
104 self::$hyphenUcs4 = $this->Utf8ToUcs4("-");
105
106 if (!is_null($encoding))
107 $this->encoding = $encoding;
108 else
109 $this->encoding = "utf-8";
110 }
111
118 public function IsEncoded($domainName)
119 {
120 $this->ClearErrors();
121
122 $domainName = mb_strtolower(trim($domainName));
123
124 $schemePosition = mb_strpos($domainName, "://");
125 if ($schemePosition !== false)
126 $domainName = mb_substr($domainName, $schemePosition + 3);
127
128 if ($this->encoding != "utf-8")
129 $domainName = \Bitrix\Main\Text\Encoding::convertEncoding($domainName, $this->encoding, "utf-8");
130
131 $domainNameUcs4 = $this->Utf8ToUcs4($domainName);
132 if (empty($domainNameUcs4))
133 return false;
134
135 $arDomainNameUcs4 = $this->ExplodeDomainName($domainNameUcs4);
136
137 foreach ($arDomainNameUcs4 as $value)
138 {
139 $checked = array_slice($value, 0, self::$punycodePrefixLength);
140 if (self::$punycodePrefixUcs4 == $checked)
141 return true;
142 }
143
144 return false;
145 }
146
153 public function Decode($domainName)
154 {
155 $this->ClearErrors();
156
157 $domainName = mb_strtolower(trim($domainName));
158
159 $scheme = "";
160 $schemePosition = mb_strpos($domainName, "://");
161 if ($schemePosition !== false)
162 {
163 $scheme = mb_substr($domainName, 0, $schemePosition);
164 $domainName = mb_substr($domainName, $schemePosition + 3);
165 }
166
167 $port = "";
168 if (preg_match("/^(.+):([0-9]+)\$/", $domainName, $portMatch))
169 {
170 $port = $portMatch[2];
171 $domainName = $portMatch[1];
172 }
173
174 if ($this->encoding != "utf-8")
175 $domainName = \Bitrix\Main\Text\Encoding::convertEncoding($domainName, $this->encoding, "utf-8");
176
177 $domainNameUcs4 = $this->Utf8ToUcs4($domainName);
178 if (empty($domainNameUcs4))
179 return "";
180
181 $arDomainNameUcs4 = $this->ExplodeDomainName($domainNameUcs4);
182
183 foreach ($arDomainNameUcs4 as $key => $value)
184 {
185 $checked = array_slice($value, 0, self::$punycodePrefixLength);
186 if (self::$punycodePrefixUcs4 != $checked)
187 continue;
188
189 $arDomainNameUcs4[$key] = $this->DoDecodeUcs4($value);
190 }
191
192 $domainNameUcs4 = $this->ImplodeDomainName($arDomainNameUcs4);
193 $domainName = $this->Ucs4ToUtf8($domainNameUcs4);
194
195 if ($this->encoding != "utf-8")
196 $domainName = \Bitrix\Main\Text\Encoding::convertEncoding($domainName, "utf-8", $this->encoding);
197
198 if (!empty($scheme))
199 $domainName = $scheme."://".$domainName;
200
201 if ($port !== "")
202 $domainName = $domainName.":".$port;
203
204 return $domainName;
205 }
206
213 public function Encode($domainName)
214 {
215 $this->ClearErrors();
216
217 $domainName = mb_strtolower(trim($domainName));
218
219 $scheme = "";
220 $schemePosition = mb_strpos($domainName, "://");
221 if ($schemePosition !== false)
222 {
223 $scheme = mb_substr($domainName, 0, $schemePosition);
224 $domainName = mb_substr($domainName, $schemePosition + 3);
225 }
226
227 if ($this->encoding != "utf-8")
228 $domainName = \Bitrix\Main\Text\Encoding::convertEncoding($domainName, $this->encoding, "utf-8");
229
230 $domainNameUcs4 = $this->Utf8ToUcs4($domainName);
231 if (empty($domainNameUcs4))
232 return "";
233
234 $arDomainNameUcs4 = $this->ExplodeDomainName($domainNameUcs4);
235
236 foreach ($arDomainNameUcs4 as $key => $value)
237 {
238 $checked = array_slice($value, 0, self::$punycodePrefixLength);
239 if (self::$punycodePrefixUcs4 == $checked)
240 continue;
241
242 $arDomainNameUcs4[$key] = $this->NamePrepUcs4($value);
243 if (!$arDomainNameUcs4[$key] || !is_array($arDomainNameUcs4[$key]))
244 return false;
245
246 $arDomainNameUcs4[$key] = $this->DoEncodeUcs4($arDomainNameUcs4[$key]);
247 }
248
249 $domainNameUcs4 = $this->ImplodeDomainName($arDomainNameUcs4);
250 $domainName = $this->Ucs4ToUtf8($domainNameUcs4);
251
252 if ($this->encoding != "utf-8")
253 $domainName = \Bitrix\Main\Text\Encoding::convertEncoding($domainName, "utf-8", $this->encoding);
254
255 if (!empty($scheme))
256 $domainName = $scheme."://".$domainName;
257
258 return $domainName;
259 }
260
261 private function DoDecodeUcs4($input)
262 {
263 $result = [];
264
265 $input = array_slice($input, self::$punycodePrefixLength);
266 $delimiterPosition = false;
267 for ($i = count($input) - 1; $i >= 0; $i--)
268 {
269 if (array($input[$i]) == self::$hyphenUcs4)
270 {
271 $delimiterPosition = $i;
272 break;
273 }
274 }
275
276 if ($delimiterPosition !== false)
277 {
278 for ($i = 0; $i < $delimiterPosition; $i++)
279 $result[] = $input[$i];
280 }
281
282 $resultLength = count($result);
283 $inputLength = count($input);
284
285 $isFirst = true;
286 $bias = 72;
287 $idx = 0;
288 $char = 0x80;
289
290 for ($inputIdx = ($delimiterPosition !== false) ? ($delimiterPosition + 1) : 0;
291 $inputIdx < $inputLength;
292 $resultLength++)
293 {
294 for ($oldIdx = $idx, $w = 1, $k = 36; 1; $k += 36)
295 {
296 $c = $input[$inputIdx++];
297 $digit = ($c - 48 < 10) ? $c - 22 : (($c - 65 < 26) ? $c - 65 : (($c - 97 < 26) ? $c - 97 : 36));
298 $idx += $digit * $w;
299 $t = ($k <= $bias) ? 1 : (($k >= $bias + 26) ? 26 : ($k - $bias));
300 if ($digit < $t)
301 break;
302 $w = (int) ($w * (36 - $t));
303 }
304 $bias = $this->Adapt($idx - $oldIdx, $resultLength + 1, $isFirst);
305 $isFirst = false;
306 $char += (int) ($idx / ($resultLength + 1));
307 $idx %= ($resultLength + 1);
308 if ($resultLength > 0)
309 {
310 for ($i = $resultLength; $i > $idx; $i--)
311 $result[$i] = $result[($i - 1)];
312 }
313 $result[$idx++] = $char;
314 }
315 return $result;
316 }
317
318 private function DoEncodeUcs4($input)
319 {
320 $inputLength = count($input);
321 if (!$inputLength)
322 return false;
323
324 $codeCount = 0;
325 $result = [];
326
327 for ($i = 0; $i < $inputLength; $i++)
328 {
329 $char = $input[$i];
330 if (($char > 0x2F && $char < 0x40)
331 || ($char > 0x40 && $char < 0x5B)
332 || ($char > 0x60 && $char <= 0x7B)
333 || ($char == 0x2D))
334 {
335 $result[] = $char;
336 $codeCount++;
337 }
338 }
339 if ($codeCount == $inputLength)
340 return $result;
341
342 $result = array_merge(self::$prefixUcs4, $result);
343
344 if ($codeCount)
345 $result = array_merge($result, self::$hyphenUcs4);
346
347 $isFirst = true;
348 $currentCode = 0x80;
349 $bias = 72;
350 $delta = 0;
351 while ($codeCount < $inputLength)
352 {
353 for ($i = 0, $nextCode = 0x10FFFF; $i < $inputLength; $i++)
354 {
355 if ($input[$i] >= $currentCode && $input[$i] <= $nextCode)
356 $nextCode = $input[$i];
357 }
358 $delta += ($nextCode - $currentCode) * ($codeCount + 1);
359 $currentCode = $nextCode;
360
361 for ($i = 0; $i < $inputLength; $i++)
362 {
363 if ($input[$i] < $currentCode)
364 {
365 $delta++;
366 }
367 elseif ($input[$i] == $currentCode)
368 {
369 for ($q = $delta, $k = 36; 1; $k += 36)
370 {
371 $t = ($k <= $bias) ? 1 : (($k >= $bias + 26) ? 26 : $k - $bias);
372 if ($q < $t)
373 break;
374 $d = $t + (($q - $t) % (36 - $t));
375 $result[] = $d + 22 + 75 * ($d < 26);
376 $q = (int) (($q - $t) / (36 - $t));
377 }
378 $result[] = $q + 22 + 75 * ($q < 26);
379 $bias = $this->Adapt($delta, $codeCount + 1, $isFirst);
380 $codeCount++;
381 $delta = 0;
382 $isFirst = false;
383 }
384 }
385 $delta++;
386 $currentCode++;
387 }
388 return $result;
389 }
390
391 private function Adapt($delta, $numPoints, $isFirst)
392 {
393 $delta = intval($isFirst ? ($delta / 700) : ($delta / 2));
394 $delta += intval($delta / $numPoints);
395 for ($k = 0; $delta > 455; $k += 36)
396 $delta = intval($delta / (36 - 1));
397 return intval($k + 36 * $delta / ($delta + 38));
398 }
399
400 private function NamePrepUcs4($input)
401 {
402 $output = [];
403
404 foreach ($input as $v)
405 {
406 if (in_array($v, self::$rfc3454Table['Skip']))
407 continue;
408
409 if (in_array($v, self::$rfc3454Table['Reject'])
410 || in_array($v, self::$rfc3454Table['RejectGeneral']))
411 {
412 $this->AddError('Rejected code U+'.sprintf('%08X', $v));
413 return false;
414 }
415 foreach (self::$rfc3454Table['RejectRanges'] as $range)
416 {
417 if ($range[0] <= $v && $v <= $range[1])
418 {
419 $this->AddError('Rejected code U+'.sprintf('%08X', $v));
420 return false;
421 }
422 }
423
424 if ($v >= 0xAC00 && $v <= 0xD7AF)
425 {
426 foreach ($this->DecomposeKorean($v) as $out)
427 $output[] = (int) $out;
428 }
429 else
430 {
431 $output[] = (int) $v;
432 }
433 }
434
435 $output = $this->ComposeKorean($output);
436
437 $lastClass = 0;
438 $lastStarter = 0;
439 $outputLength = count($output);
440 for ($i = 0; $i < $outputLength; $i++)
441 {
442 $class = self::$rfc3454Table['CombiningClass'][$output[$i]] ?? 0;
443 if ((!$lastClass || $lastClass > $class) && $class)
444 {
445 $sequenceLength = $i - $lastStarter;
446 $out = $this->Combine(array_slice($output, $lastStarter, $sequenceLength));
447 if ($out)
448 {
449 $output[$lastStarter] = $out;
450 if (count($output) != $sequenceLength)
451 {
452 for ($j = $i + 1; $j < $outputLength; $j++)
453 $output[$j - 1] = $output[$j];
454 unset($output[$outputLength]);
455 }
456 $i--;
457 $outputLength--;
458 if ($i == $lastStarter)
459 {
460 $lastClass = 0;
461 }
462 else
463 {
464 $lastClass = self::$rfc3454Table['CombiningClass'][$output[$i - 1]] ?? 0;
465 }
466 continue;
467 }
468 }
469
470 if (!$class)
471 $lastStarter = $i;
472 $lastClass = $class;
473 }
474 return $output;
475 }
476
477 private function Combine($input)
478 {
479 $inputLength = count($input);
480 foreach (self::$rfc3454Table['ReplaceMap'] as $src => $target)
481 {
482 if ($target[0] != $input[0])
483 continue;
484 if (count($target) != $inputLength)
485 continue;
486 $hit = false;
487 foreach ($input as $k => $v)
488 {
489 if ($v == $target[$k])
490 {
491 $hit = true;
492 }
493 else
494 {
495 $hit = false;
496 break;
497 }
498 }
499 if ($hit)
500 return $src;
501 }
502 return false;
503 }
504
505 private function DecomposeKorean($char)
506 {
507 $ix = (int) $char - 0xAC00;
508 if ($ix < 0 || $ix >= 11172)
509 return array($char);
510 $result = [];
511 $result[] = (int) (0x1100 + $ix / 588);
512 $result[] = (int) (0x1161 + ($ix % 588) / 28);
513 $t = 0x11A7 + $ix % 28;
514 if ($t != 0x11A7)
515 $result[] = $t;
516 return $result;
517 }
518
519 private function ComposeKorean($input)
520 {
521 $inputLength = count($input);
522 if (!$inputLength)
523 return [];
524
525 $result = [];
526 $last = (int) $input[0];
527 $result[] = $last;
528
529 for ($i = 1; $i < $inputLength; $i++)
530 {
531 $char = (int) $input[$i];
532 $six = $last - 0xAC00;
533 $lix = $last - 0x1100;
534 $vix = $char - 0x1161;
535 $tix = $char - 0x11A7;
536
537 if ($six >= 0 && $six < 11172 && ($six % 28 == 0) && $tix >= 0 && $tix <= 28)
538 {
539 $last += $tix;
540 $result[(count($result) - 1)] = $last;
541 continue;
542 }
543
544 if ($lix >= 0 && $lix < 19 && $vix >= 0 && $vix < 21)
545 {
546 $last = 0xAC00 + ($lix * 21 + $vix) * 28;
547 $result[(count($result) - 1)] = $last;
548 continue;
549 }
550
551 $last = $char;
552 $result[] = $char;
553 }
554 return $result;
555 }
556
557 private function Utf8ToUcs4($input)
558 {
559 $output = [];
560 $outputLength = 0;
561 $inputLength = strlen($input);
562 $mode = 'next';
563 $test = 'none';
564 $startByte = 0;
565 $nextByte = 0;
566
567 for ($i = 0; $i < $inputLength; $i++)
568 {
569 $v = ord($input[$i]);
570 if ($v < 128)
571 {
572 $output[$outputLength] = $v;
573 $outputLength++;
574 if ($mode == 'add')
575 {
576 $this->AddError("UTF-8 / UCS-4 conversion failed: byte ".$i);
577 return false;
578 }
579 continue;
580 }
581 if ($mode == 'next')
582 {
583 $startByte = $v;
584 $mode = 'add';
585 $test = 'range';
586 if ($v >> 5 == 6)
587 {
588 $nextByte = 0;
589 $v = ($v - 192) << 6;
590 }
591 elseif ($v >> 4 == 14)
592 {
593 $nextByte = 1;
594 $v = ($v - 224) << 12;
595 }
596 elseif ($v >> 3 == 30)
597 {
598 $nextByte = 2;
599 $v = ($v - 240) << 18;
600 }
601 elseif ($v >> 2 == 62)
602 {
603 $nextByte = 3;
604 $v = ($v - 248) << 24;
605 }
606 elseif ($v >> 1 == 126)
607 {
608 $nextByte = 4;
609 $v = ($v - 252) << 30;
610 }
611 else
612 {
613 $this->AddError("UTF-8 / UCS-4 conversion failed: byte ".$i);
614 return false;
615 }
616
617 $output[$outputLength] = $v;
618 $outputLength++;
619 continue;
620 }
621 if ($mode == 'add')
622 {
623 if ($test == 'range')
624 {
625 $test = 'none';
626 if (($v < 0xA0 && $startByte == 0xE0)
627 || ($v < 0x90 && $startByte == 0xF0)
628 || ($v > 0x8F && $startByte == 0xF4))
629 {
630 $this->AddError("UTF-8 / UCS-4 conversion failed: byte ".$i);
631 return false;
632 }
633 }
634 if ($v >> 6 == 2)
635 {
636 $v = ($v - 128) << ($nextByte * 6);
637 $output[($outputLength - 1)] += $v;
638 $nextByte--;
639 }
640 else
641 {
642 $this->AddError("UTF-8 / UCS-4 conversion failed: byte ".$i);
643 return false;
644 }
645 if ($nextByte < 0)
646 $mode = 'next';
647 }
648 }
649 return $output;
650 }
651
652 private function Ucs4ToUtf8($input)
653 {
654 $output = '';
655 foreach ($input as $k => $v)
656 {
657 if ($v < 128)
658 {
659 $output .= chr($v);
660 }
661 elseif ($v < (1 << 11))
662 {
663 $output .= chr(192 + ($v >> 6)).chr(128 + ($v & 63));
664 }
665 elseif ($v < (1 << 16))
666 {
667 $output .= chr(224 + ($v >> 12)).chr(128 + (($v >> 6) & 63)).chr(128 + ($v & 63));
668 }
669 elseif ($v < (1 << 21))
670 {
671 $output .= chr(240 + ($v >> 18)).chr(128 + (($v >> 12) & 63)).chr(128 + (($v >> 6) & 63)).chr(128 + ($v & 63));
672 }
673 else
674 {
675 $this->AddError('UCS-4 / UTF-8 conversion failed: byte '.$k);
676 return false;
677 }
678 }
679 return $output;
680 }
681
682 private function ExplodeDomainName($domainNameUcs4)
683 {
684 $arResult = [];
685
686 $ar = [];
687 foreach ($domainNameUcs4 as $value)
688 {
689 if ($value == 0x2E)
690 {
691 $arResult[] = $ar;
692 $ar = [];
693 }
694 else
695 {
696 $ar[] = $value;
697 }
698 }
699 $arResult[] = $ar;
700
701 return $arResult;
702 }
703
704 private function ImplodeDomainName($arDomainNameUcs4)
705 {
706 $result = [];
707
708 foreach ($arDomainNameUcs4 as $value)
709 {
710 if (!empty($result))
711 $result[] = 0x2E;
712 $result = array_merge($result, $value);
713 }
714
715 return $result;
716 }
717
718 private function ClearErrors()
719 {
720 $this->arErrors = [];
721 }
722
723 private function AddError($error)
724 {
725 $this->arErrors[] = $error;
726 }
727
728 public function GetErrors()
729 {
730 return $this->arErrors;
731 }
732
733 private static $rfc3454Table = array(
734 'Skip' => array(
735 0xAD, 0x34F, 0x1806, 0x180B, 0x180C, 0x180D, 0x200B, 0x200C, 0x200D,
736 0x2060, 0xFE00, 0xFE01, 0xFE02, 0xFE03, 0xFE04, 0xFE05, 0xFE06, 0xFE07,
737 0xFE08, 0xFE09, 0xFE0A, 0xFE0B, 0xFE0C, 0xFE0D, 0xFE0E, 0xFE0F, 0xFEFF
738 ),
739 'RejectGeneral' => array(
740 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
741 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 ,33, 34, 35, 36, 37,
742 38, 39, 40, 41, 42, 43, 44, 47, 59, 60, 61, 62, 63, 64, 91, 92, 93, 94,
743 95, 96, 123, 124, 125, 126, 127, 0x3002
744 ),
745 'Reject' => array(
746 0xA0, 0x340, 0x341, 0x6DD, 0x70F, 0x1680, 0x180E, 0x2000, 0x2001, 0x2002, 0x2003,
747 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x200B, 0x200C, 0x200D, 0x200E,
748 0x200F, 0x2028, 0x2029, 0x202A, 0x202B, 0x202C, 0x202D, 0x202E, 0x202F, 0x205F, 0x206A,
749 0x206B, 0x206C, 0x206D, 0x206E, 0x206F, 0x3000, 0xFEFF, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFC,
750 0xFFFD, 0xFFFE, 0xFFFF, 0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, 0x3FFFF, 0x4FFFE,
751 0x4FFFF, 0x5FFFE, 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, 0x8FFFF,
752 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE,
753 0xDFFFF, 0xE0001, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, 0x10FFFE, 0x10FFFF
754 ),
755 'RejectRanges' => array(
756 array(0x80, 0x9F), array(0x2060, 0x206F), array(0x1D173, 0x1D17A), array(0xE000, 0xF8FF),
757 array(0xF0000, 0xFFFFD), array(0x100000, 0x10FFFD), array(0xFDD0, 0xFDEF),
758 array(0xD800, 0xDFFF), array(0x2FF0, 0x2FFB), array(0xE0020, 0xE007F)
759 ),
760 'ReplaceMap' => array(
761 0x41 => array(0x61), 0x42 => array(0x62), 0x43 => array(0x63), 0x44 => array(0x64),
762 0x45 => array(0x65), 0x46 => array(0x66), 0x47 => array(0x67), 0x48 => array(0x68),
763 0x49 => array(0x69), 0x4A => array(0x6A), 0x4B => array(0x6B), 0x4C => array(0x6C),
764 0x4D => array(0x6D), 0x4E => array(0x6E), 0x4F => array(0x6F), 0x50 => array(0x70),
765 0x51 => array(0x71), 0x52 => array(0x72), 0x53 => array(0x73), 0x54 => array(0x74),
766 0x55 => array(0x75), 0x56 => array(0x76), 0x57 => array(0x77), 0x58 => array(0x78),
767 0x59 => array(0x79), 0x5A => array(0x7A), 0xB5 => array(0x3BC), 0xC0 => array(0xE0),
768 0xC1 => array(0xE1), 0xC2 => array(0xE2), 0xC3 => array(0xE3), 0xC4 => array(0xE4),
769 0xC5 => array(0xE5), 0xC6 => array(0xE6), 0xC7 => array(0xE7), 0xC8 => array(0xE8),
770 0xC9 => array(0xE9), 0xCA => array(0xEA), 0xCB => array(0xEB), 0xCC => array(0xEC),
771 0xCD => array(0xED), 0xCE => array(0xEE), 0xCF => array(0xEF), 0xD0 => array(0xF0),
772 0xD1 => array(0xF1), 0xD2 => array(0xF2), 0xD3 => array(0xF3), 0xD4 => array(0xF4),
773 0xD5 => array(0xF5), 0xD6 => array(0xF6), 0xD8 => array(0xF8), 0xD9 => array(0xF9),
774 0xDA => array(0xFA), 0xDB => array(0xFB), 0xDC => array(0xFC), 0xDD => array(0xFD),
775 0xDE => array(0xFE), 0xDF => array(0x73, 0x73), 0x100 => array(0x101),
776 0x102 => array(0x103), 0x104 => array(0x105), 0x106 => array(0x107),
777 0x108 => array(0x109), 0x10A => array(0x10B), 0x10C => array(0x10D),
778 0x10E => array(0x10F), 0x110 => array(0x111), 0x112 => array(0x113),
779 0x114 => array(0x115), 0x116 => array(0x117), 0x118 => array(0x119),
780 0x11A => array(0x11B), 0x11C => array(0x11D), 0x11E => array(0x11F),
781 0x120 => array(0x121), 0x122 => array(0x123), 0x124 => array(0x125),
782 0x126 => array(0x127), 0x128 => array(0x129), 0x12A => array(0x12B),
783 0x12C => array(0x12D), 0x12E => array(0x12F), 0x130 => array(0x69, 0x307),
784 0x132 => array(0x133), 0x134 => array(0x135), 0x136 => array(0x137),
785 0x139 => array(0x13A), 0x13B => array(0x13C), 0x13D => array(0x13E),
786 0x13F => array(0x140), 0x141 => array(0x142), 0x143 => array(0x144),
787 0x145 => array(0x146), 0x147 => array(0x148), 0x149 => array(0x2BC, 0x6E),
788 0x14A => array(0x14B), 0x14C => array(0x14D), 0x14E => array(0x14F),
789 0x150 => array(0x151), 0x152 => array(0x153), 0x154 => array(0x155),
790 0x156 => array(0x157), 0x158 => array(0x159), 0x15A => array(0x15B),
791 0x15C => array(0x15D), 0x15E => array(0x15F), 0x160 => array(0x161),
792 0x162 => array(0x163), 0x164 => array(0x165), 0x166 => array(0x167),
793 0x168 => array(0x169), 0x16A => array(0x16B), 0x16C => array(0x16D),
794 0x16E => array(0x16F), 0x170 => array(0x171), 0x172 => array(0x173),
795 0x174 => array(0x175), 0x176 => array(0x177), 0x178 => array(0xFF),
796 0x179 => array(0x17A), 0x17B => array(0x17C), 0x17D => array(0x17E),
797 0x17F => array(0x73), 0x181 => array(0x253), 0x182 => array(0x183),
798 0x184 => array(0x185), 0x186 => array(0x254), 0x187 => array(0x188),
799 0x189 => array(0x256), 0x18A => array(0x257), 0x18B => array(0x18C),
800 0x18E => array(0x1DD), 0x18F => array(0x259), 0x190 => array(0x25B),
801 0x191 => array(0x192), 0x193 => array(0x260), 0x194 => array(0x263),
802 0x196 => array(0x269), 0x197 => array(0x268), 0x198 => array(0x199),
803 0x19C => array(0x26F), 0x19D => array(0x272), 0x19F => array(0x275),
804 0x1A0 => array(0x1A1), 0x1A2 => array(0x1A3), 0x1A4 => array(0x1A5),
805 0x1A6 => array(0x280), 0x1A7 => array(0x1A8), 0x1A9 => array(0x283),
806 0x1AC => array(0x1AD), 0x1AE => array(0x288), 0x1AF => array(0x1B0),
807 0x1B1 => array(0x28A), 0x1B2 => array(0x28B), 0x1B3 => array(0x1B4),
808 0x1B5 => array(0x1B6), 0x1B7 => array(0x292), 0x1B8 => array(0x1B9),
809 0x1BC => array(0x1BD), 0x1C4 => array(0x1C6), 0x1C5 => array(0x1C6),
810 0x1C7 => array(0x1C9), 0x1C8 => array(0x1C9), 0x1CA => array(0x1CC),
811 0x1CB => array(0x1CC), 0x1CD => array(0x1CE), 0x1CF => array(0x1D0),
812 0x1D1 => array(0x1D2), 0x1D3 => array(0x1D4), 0x1D5 => array(0x1D6),
813 0x1D7 => array(0x1D8), 0x1D9 => array(0x1DA), 0x1DB => array(0x1DC),
814 0x1DE => array(0x1DF), 0x1E0 => array(0x1E1), 0x1E2 => array(0x1E3),
815 0x1E4 => array(0x1E5), 0x1E6 => array(0x1E7), 0x1E8 => array(0x1E9),
816 0x1EA => array(0x1EB), 0x1EC => array(0x1ED), 0x1EE => array(0x1EF),
817 0x1F0 => array(0x6A, 0x30C), 0x1F1 => array(0x1F3), 0x1F2 => array(0x1F3),
818 0x1F4 => array(0x1F5), 0x1F6 => array(0x195), 0x1F7 => array(0x1BF),
819 0x1F8 => array(0x1F9), 0x1FA => array(0x1FB), 0x1FC => array(0x1FD),
820 0x1FE => array(0x1FF), 0x200 => array(0x201), 0x202 => array(0x203),
821 0x204 => array(0x205), 0x206 => array(0x207), 0x208 => array(0x209),
822 0x20A => array(0x20B), 0x20C => array(0x20D), 0x20E => array(0x20F),
823 0x210 => array(0x211), 0x212 => array(0x213), 0x214 => array(0x215),
824 0x216 => array(0x217), 0x218 => array(0x219), 0x21A => array(0x21B),
825 0x21C => array(0x21D), 0x21E => array(0x21F), 0x220 => array(0x19E),
826 0x222 => array(0x223), 0x224 => array(0x225), 0x226 => array(0x227),
827 0x228 => array(0x229), 0x22A => array(0x22B), 0x22C => array(0x22D),
828 0x22E => array(0x22F), 0x230 => array(0x231), 0x232 => array(0x233),
829 0x345 => array(0x3B9), 0x37A => array(0x20, 0x3B9), 0x386 => array(0x3AC),
830 0x388 => array(0x3AD), 0x389 => array(0x3AE), 0x38A => array(0x3AF),
831 0x38C => array(0x3CC), 0x38E => array(0x3CD), 0x38F => array(0x3CE),
832 0x390 => array(0x3B9, 0x308, 0x301), 0x391 => array(0x3B1), 0x392 => array(0x3B2),
833 0x393 => array(0x3B3), 0x394 => array(0x3B4), 0x395 => array(0x3B5),
834 0x396 => array(0x3B6), 0x397 => array(0x3B7), 0x398 => array(0x3B8),
835 0x399 => array(0x3B9), 0x39A => array(0x3BA), 0x39B => array(0x3BB),
836 0x39C => array(0x3BC), 0x39D => array(0x3BD), 0x39E => array(0x3BE),
837 0x39F => array(0x3BF), 0x3A0 => array(0x3C0), 0x3A1 => array(0x3C1),
838 0x3A3 => array(0x3C3), 0x3A4 => array(0x3C4), 0x3A5 => array(0x3C5),
839 0x3A6 => array(0x3C6), 0x3A7 => array(0x3C7), 0x3A8 => array(0x3C8),
840 0x3A9 => array(0x3C9), 0x3AA => array(0x3CA), 0x3AB => array(0x3CB),
841 0x3B0 => array(0x3C5, 0x308, 0x301), 0x3C2 => array(0x3C3), 0x3D0 => array(0x3B2),
842 0x3D1 => array(0x3B8), 0x3D2 => array(0x3C5), 0x3D3 => array(0x3CD),
843 0x3D4 => array(0x3CB), 0x3D5 => array(0x3C6), 0x3D6 => array(0x3C0),
844 0x3D8 => array(0x3D9), 0x3DA => array(0x3DB), 0x3DC => array(0x3DD),
845 0x3DE => array(0x3DF), 0x3E0 => array(0x3E1), 0x3E2 => array(0x3E3),
846 0x3E4 => array(0x3E5), 0x3E6 => array(0x3E7), 0x3E8 => array(0x3E9),
847 0x3EA => array(0x3EB), 0x3EC => array(0x3ED), 0x3EE => array(0x3EF),
848 0x3F0 => array(0x3BA), 0x3F1 => array(0x3C1), 0x3F2 => array(0x3C3),
849 0x3F4 => array(0x3B8), 0x3F5 => array(0x3B5), 0x400 => array(0x450),
850 0x401 => array(0x451), 0x402 => array(0x452), 0x403 => array(0x453),
851 0x404 => array(0x454), 0x405 => array(0x455), 0x406 => array(0x456),
852 0x407 => array(0x457), 0x408 => array(0x458), 0x409 => array(0x459),
853 0x40A => array(0x45A), 0x40B => array(0x45B), 0x40C => array(0x45C),
854 0x40D => array(0x45D), 0x40E => array(0x45E), 0x40F => array(0x45F),
855 0x410 => array(0x430), 0x411 => array(0x431), 0x412 => array(0x432),
856 0x413 => array(0x433), 0x414 => array(0x434), 0x415 => array(0x435),
857 0x416 => array(0x436), 0x417 => array(0x437), 0x418 => array(0x438),
858 0x419 => array(0x439), 0x41A => array(0x43A), 0x41B => array(0x43B),
859 0x41C => array(0x43C), 0x41D => array(0x43D), 0x41E => array(0x43E),
860 0x41F => array(0x43F), 0x420 => array(0x440), 0x421 => array(0x441),
861 0x422 => array(0x442), 0x423 => array(0x443), 0x424 => array(0x444),
862 0x425 => array(0x445), 0x426 => array(0x446), 0x427 => array(0x447),
863 0x428 => array(0x448), 0x429 => array(0x449), 0x42A => array(0x44A),
864 0x42B => array(0x44B), 0x42C => array(0x44C), 0x42D => array(0x44D),
865 0x42E => array(0x44E), 0x42F => array(0x44F), 0x460 => array(0x461),
866 0x462 => array(0x463), 0x464 => array(0x465), 0x466 => array(0x467),
867 0x468 => array(0x469), 0x46A => array(0x46B), 0x46C => array(0x46D),
868 0x46E => array(0x46F), 0x470 => array(0x471), 0x472 => array(0x473),
869 0x474 => array(0x475), 0x476 => array(0x477), 0x478 => array(0x479),
870 0x47A => array(0x47B), 0x47C => array(0x47D), 0x47E => array(0x47F),
871 0x480 => array(0x481), 0x48A => array(0x48B), 0x48C => array(0x48D),
872 0x48E => array(0x48F), 0x490 => array(0x491), 0x492 => array(0x493),
873 0x494 => array(0x495), 0x496 => array(0x497), 0x498 => array(0x499),
874 0x49A => array(0x49B), 0x49C => array(0x49D), 0x49E => array(0x49F),
875 0x4A0 => array(0x4A1), 0x4A2 => array(0x4A3), 0x4A4 => array(0x4A5),
876 0x4A6 => array(0x4A7), 0x4A8 => array(0x4A9), 0x4AA => array(0x4AB),
877 0x4AC => array(0x4AD), 0x4AE => array(0x4AF), 0x4B0 => array(0x4B1),
878 0x4B2 => array(0x4B3), 0x4B4 => array(0x4B5), 0x4B6 => array(0x4B7),
879 0x4B8 => array(0x4B9), 0x4BA => array(0x4BB), 0x4BC => array(0x4BD),
880 0x4BE => array(0x4BF), 0x4C1 => array(0x4C2), 0x4C3 => array(0x4C4),
881 0x4C5 => array(0x4C6), 0x4C7 => array(0x4C8), 0x4C9 => array(0x4CA),
882 0x4CB => array(0x4CC), 0x4CD => array(0x4CE), 0x4D0 => array(0x4D1),
883 0x4D2 => array(0x4D3), 0x4D4 => array(0x4D5), 0x4D6 => array(0x4D7),
884 0x4D8 => array(0x4D9), 0x4DA => array(0x4DB), 0x4DC => array(0x4DD),
885 0x4DE => array(0x4DF), 0x4E0 => array(0x4E1), 0x4E2 => array(0x4E3),
886 0x4E4 => array(0x4E5), 0x4E6 => array(0x4E7), 0x4E8 => array(0x4E9),
887 0x4EA => array(0x4EB), 0x4EC => array(0x4ED), 0x4EE => array(0x4EF),
888 0x4F0 => array(0x4F1), 0x4F2 => array(0x4F3), 0x4F4 => array(0x4F5),
889 0x4F8 => array(0x4F9), 0x500 => array(0x501), 0x502 => array(0x503),
890 0x504 => array(0x505), 0x506 => array(0x507), 0x508 => array(0x509),
891 0x50A => array(0x50B), 0x50C => array(0x50D), 0x50E => array(0x50F),
892 0x531 => array(0x561), 0x532 => array(0x562), 0x533 => array(0x563),
893 0x534 => array(0x564), 0x535 => array(0x565), 0x536 => array(0x566),
894 0x537 => array(0x567), 0x538 => array(0x568), 0x539 => array(0x569),
895 0x53A => array(0x56A), 0x53B => array(0x56B), 0x53C => array(0x56C),
896 0x53D => array(0x56D), 0x53E => array(0x56E), 0x53F => array(0x56F),
897 0x540 => array(0x570), 0x541 => array(0x571), 0x542 => array(0x572),
898 0x543 => array(0x573), 0x544 => array(0x574), 0x545 => array(0x575),
899 0x546 => array(0x576), 0x547 => array(0x577), 0x548 => array(0x578),
900 0x549 => array(0x579), 0x54A => array(0x57A), 0x54B => array(0x57B),
901 0x54C => array(0x57C), 0x54D => array(0x57D), 0x54E => array(0x57E),
902 0x54F => array(0x57F), 0x550 => array(0x580), 0x551 => array(0x581),
903 0x552 => array(0x582), 0x553 => array(0x583), 0x554 => array(0x584),
904 0x555 => array(0x585), 0x556 => array(0x586), 0x587 => array(0x565, 0x582),
905 0xE33 => array(0xE4D, 0xE32), 0x1E00 => array(0x1E01), 0x1E02 => array(0x1E03),
906 0x1E04 => array(0x1E05), 0x1E06 => array(0x1E07), 0x1E08 => array(0x1E09),
907 0x1E0A => array(0x1E0B), 0x1E0C => array(0x1E0D), 0x1E0E => array(0x1E0F),
908 0x1E10 => array(0x1E11), 0x1E12 => array(0x1E13), 0x1E14 => array(0x1E15),
909 0x1E16 => array(0x1E17), 0x1E18 => array(0x1E19), 0x1E1A => array(0x1E1B),
910 0x1E1C => array(0x1E1D), 0x1E1E => array(0x1E1F), 0x1E20 => array(0x1E21),
911 0x1E22 => array(0x1E23), 0x1E24 => array(0x1E25), 0x1E26 => array(0x1E27),
912 0x1E28 => array(0x1E29), 0x1E2A => array(0x1E2B), 0x1E2C => array(0x1E2D),
913 0x1E2E => array(0x1E2F), 0x1E30 => array(0x1E31), 0x1E32 => array(0x1E33),
914 0x1E34 => array(0x1E35), 0x1E36 => array(0x1E37), 0x1E38 => array(0x1E39),
915 0x1E3A => array(0x1E3B), 0x1E3C => array(0x1E3D), 0x1E3E => array(0x1E3F),
916 0x1E40 => array(0x1E41), 0x1E42 => array(0x1E43), 0x1E44 => array(0x1E45),
917 0x1E46 => array(0x1E47), 0x1E48 => array(0x1E49), 0x1E4A => array(0x1E4B),
918 0x1E4C => array(0x1E4D), 0x1E4E => array(0x1E4F), 0x1E50 => array(0x1E51),
919 0x1E52 => array(0x1E53), 0x1E54 => array(0x1E55), 0x1E56 => array(0x1E57),
920 0x1E58 => array(0x1E59), 0x1E5A => array(0x1E5B), 0x1E5C => array(0x1E5D),
921 0x1E5E => array(0x1E5F), 0x1E60 => array(0x1E61), 0x1E62 => array(0x1E63),
922 0x1E64 => array(0x1E65), 0x1E66 => array(0x1E67), 0x1E68 => array(0x1E69),
923 0x1E6A => array(0x1E6B), 0x1E6C => array(0x1E6D), 0x1E6E => array(0x1E6F),
924 0x1E70 => array(0x1E71), 0x1E72 => array(0x1E73), 0x1E74 => array(0x1E75),
925 0x1E76 => array(0x1E77), 0x1E78 => array(0x1E79), 0x1E7A => array(0x1E7B),
926 0x1E7C => array(0x1E7D), 0x1E7E => array(0x1E7F), 0x1E80 => array(0x1E81),
927 0x1E82 => array(0x1E83), 0x1E84 => array(0x1E85), 0x1E86 => array(0x1E87),
928 0x1E88 => array(0x1E89), 0x1E8A => array(0x1E8B), 0x1E8C => array(0x1E8D),
929 0x1E8E => array(0x1E8F), 0x1E90 => array(0x1E91), 0x1E92 => array(0x1E93),
930 0x1E94 => array(0x1E95), 0x1E96 => array(0x68, 0x331), 0x1E97 => array(0x74, 0x308),
931 0x1E98 => array(0x77, 0x30A), 0x1E99 => array(0x79, 0x30A),
932 0x1E9A => array(0x61, 0x2BE), 0x1E9B => array(0x1E61), 0x1EA0 => array(0x1EA1),
933 0x1EA2 => array(0x1EA3), 0x1EA4 => array(0x1EA5), 0x1EA6 => array(0x1EA7),
934 0x1EA8 => array(0x1EA9), 0x1EAA => array(0x1EAB), 0x1EAC => array(0x1EAD),
935 0x1EAE => array(0x1EAF), 0x1EB0 => array(0x1EB1), 0x1EB2 => array(0x1EB3),
936 0x1EB4 => array(0x1EB5), 0x1EB6 => array(0x1EB7), 0x1EB8 => array(0x1EB9),
937 0x1EBA => array(0x1EBB), 0x1EBC => array(0x1EBD), 0x1EBE => array(0x1EBF),
938 0x1EC0 => array(0x1EC1), 0x1EC2 => array(0x1EC3), 0x1EC4 => array(0x1EC5),
939 0x1EC6 => array(0x1EC7), 0x1EC8 => array(0x1EC9), 0x1ECA => array(0x1ECB),
940 0x1ECC => array(0x1ECD), 0x1ECE => array(0x1ECF), 0x1ED0 => array(0x1ED1),
941 0x1ED2 => array(0x1ED3), 0x1ED4 => array(0x1ED5), 0x1ED6 => array(0x1ED7),
942 0x1ED8 => array(0x1ED9), 0x1EDA => array(0x1EDB), 0x1EDC => array(0x1EDD),
943 0x1EDE => array(0x1EDF), 0x1EE0 => array(0x1EE1), 0x1EE2 => array(0x1EE3),
944 0x1EE4 => array(0x1EE5), 0x1EE6 => array(0x1EE7), 0x1EE8 => array(0x1EE9),
945 0x1EEA => array(0x1EEB), 0x1EEC => array(0x1EED), 0x1EEE => array(0x1EEF),
946 0x1EF0 => array(0x1EF1), 0x1EF2 => array(0x1EF3), 0x1EF4 => array(0x1EF5),
947 0x1EF6 => array(0x1EF7), 0x1EF8 => array(0x1EF9), 0x1F08 => array(0x1F00),
948 0x1F09 => array(0x1F01), 0x1F0A => array(0x1F02), 0x1F0B => array(0x1F03),
949 0x1F0C => array(0x1F04), 0x1F0D => array(0x1F05), 0x1F0E => array(0x1F06),
950 0x1F0F => array(0x1F07), 0x1F18 => array(0x1F10), 0x1F19 => array(0x1F11),
951 0x1F1A => array(0x1F12), 0x1F1B => array(0x1F13), 0x1F1C => array(0x1F14),
952 0x1F1D => array(0x1F15), 0x1F28 => array(0x1F20), 0x1F29 => array(0x1F21),
953 0x1F2A => array(0x1F22), 0x1F2B => array(0x1F23), 0x1F2C => array(0x1F24),
954 0x1F2D => array(0x1F25), 0x1F2E => array(0x1F26), 0x1F2F => array(0x1F27),
955 0x1F38 => array(0x1F30), 0x1F39 => array(0x1F31), 0x1F3A => array(0x1F32),
956 0x1F3B => array(0x1F33), 0x1F3C => array(0x1F34), 0x1F3D => array(0x1F35),
957 0x1F3E => array(0x1F36), 0x1F3F => array(0x1F37), 0x1F48 => array(0x1F40),
958 0x1F49 => array(0x1F41), 0x1F4A => array(0x1F42), 0x1F4B => array(0x1F43),
959 0x1F4C => array(0x1F44), 0x1F4D => array(0x1F45), 0x1F50 => array(0x3C5, 0x313),
960 0x1F52 => array(0x3C5, 0x313, 0x300), 0x1F54 => array(0x3C5, 0x313, 0x301),
961 0x1F56 => array(0x3C5, 0x313, 0x342), 0x1F59 => array(0x1F51), 0x1F5B => array(0x1F53),
962 0x1F5D => array(0x1F55), 0x1F5F => array(0x1F57), 0x1F68 => array(0x1F60),
963 0x1F69 => array(0x1F61), 0x1F6A => array(0x1F62), 0x1F6B => array(0x1F63),
964 0x1F6C => array(0x1F64), 0x1F6D => array(0x1F65), 0x1F6E => array(0x1F66),
965 0x1F6F => array(0x1F67), 0x1F80 => array(0x1F00, 0x3B9), 0x1F81 => array(0x1F01, 0x3B9),
966 0x1F82 => array(0x1F02, 0x3B9), 0x1F83 => array(0x1F03, 0x3B9),
967 0x1F84 => array(0x1F04, 0x3B9), 0x1F85 => array(0x1F05, 0x3B9),
968 0x1F86 => array(0x1F06, 0x3B9), 0x1F87 => array(0x1F07, 0x3B9),
969 0x1F88 => array(0x1F00, 0x3B9), 0x1F89 => array(0x1F01, 0x3B9),
970 0x1F8A => array(0x1F02, 0x3B9), 0x1F8B => array(0x1F03, 0x3B9),
971 0x1F8C => array(0x1F04, 0x3B9), 0x1F8D => array(0x1F05, 0x3B9),
972 0x1F8E => array(0x1F06, 0x3B9), 0x1F8F => array(0x1F07, 0x3B9),
973 0x1F90 => array(0x1F20, 0x3B9), 0x1F91 => array(0x1F21, 0x3B9),
974 0x1F92 => array(0x1F22, 0x3B9), 0x1F93 => array(0x1F23, 0x3B9),
975 0x1F94 => array(0x1F24, 0x3B9), 0x1F95 => array(0x1F25, 0x3B9),
976 0x1F96 => array(0x1F26, 0x3B9), 0x1F97 => array(0x1F27, 0x3B9),
977 0x1F98 => array(0x1F20, 0x3B9), 0x1F99 => array(0x1F21, 0x3B9),
978 0x1F9A => array(0x1F22, 0x3B9), 0x1F9B => array(0x1F23, 0x3B9),
979 0x1F9C => array(0x1F24, 0x3B9), 0x1F9D => array(0x1F25, 0x3B9),
980 0x1F9E => array(0x1F26, 0x3B9), 0x1F9F => array(0x1F27, 0x3B9),
981 0x1FA0 => array(0x1F60, 0x3B9), 0x1FA1 => array(0x1F61, 0x3B9),
982 0x1FA2 => array(0x1F62, 0x3B9), 0x1FA3 => array(0x1F63, 0x3B9),
983 0x1FA4 => array(0x1F64, 0x3B9), 0x1FA5 => array(0x1F65, 0x3B9),
984 0x1FA6 => array(0x1F66, 0x3B9), 0x1FA7 => array(0x1F67, 0x3B9),
985 0x1FA8 => array(0x1F60, 0x3B9), 0x1FA9 => array(0x1F61, 0x3B9),
986 0x1FAA => array(0x1F62, 0x3B9), 0x1FAB => array(0x1F63, 0x3B9),
987 0x1FAC => array(0x1F64, 0x3B9), 0x1FAD => array(0x1F65, 0x3B9),
988 0x1FAE => array(0x1F66, 0x3B9), 0x1FAF => array(0x1F67, 0x3B9),
989 0x1FB2 => array(0x1F70, 0x3B9), 0x1FB3 => array(0x3B1, 0x3B9),
990 0x1FB4 => array(0x3AC, 0x3B9), 0x1FB6 => array(0x3B1, 0x342),
991 0x1FB7 => array(0x3B1, 0x342, 0x3B9), 0x1FB8 => array(0x1FB0),
992 0x1FB9 => array(0x1FB1), 0x1FBA => array(0x1F70), 0x1FBB => array(0x1F71),
993 0x1FBC => array(0x3B1, 0x3B9), 0x1FBE => array(0x3B9), 0x1FC2 => array(0x1F74, 0x3B9),
994 0x1FC3 => array(0x3B7, 0x3B9), 0x1FC4 => array(0x3AE, 0x3B9),
995 0x1FC6 => array(0x3B7, 0x342), 0x1FC7 => array(0x3B7, 0x342, 0x3B9),
996 0x1FC8 => array(0x1F72), 0x1FC9 => array(0x1F73), 0x1FCA => array(0x1F74),
997 0x1FCB => array(0x1F75), 0x1FCC => array(0x3B7, 0x3B9),
998 0x1FD2 => array(0x3B9, 0x308, 0x300), 0x1FD3 => array(0x3B9, 0x308, 0x301),
999 0x1FD6 => array(0x3B9, 0x342), 0x1FD7 => array(0x3B9, 0x308, 0x342),
1000 0x1FD8 => array(0x1FD0), 0x1FD9 => array(0x1FD1), 0x1FDA => array(0x1F76),
1001 0x1FDB => array(0x1F77), 0x1FE2 => array(0x3C5, 0x308, 0x300),
1002 0x1FE3 => array(0x3C5, 0x308, 0x301), 0x1FE4 => array(0x3C1, 0x313),
1003 0x1FE6 => array(0x3C5, 0x342), 0x1FE7 => array(0x3C5, 0x308, 0x342),
1004 0x1FE8 => array(0x1FE0), 0x1FE9 => array(0x1FE1), 0x1FEA => array(0x1F7A),
1005 0x1FEB => array(0x1F7B), 0x1FEC => array(0x1FE5), 0x1FF2 => array(0x1F7C, 0x3B9),
1006 0x1FF3 => array(0x3C9, 0x3B9), 0x1FF4 => array(0x3CE, 0x3B9),
1007 0x1FF6 => array(0x3C9, 0x342), 0x1FF7 => array(0x3C9, 0x342, 0x3B9),
1008 0x1FF8 => array(0x1F78), 0x1FF9 => array(0x1F79), 0x1FFA => array(0x1F7C),
1009 0x1FFB => array(0x1F7D), 0x1FFC => array(0x3C9, 0x3B9), 0x20A8 => array(0x72, 0x73),
1010 0x2102 => array(0x63), 0x2103 => array(0xB0, 0x63), 0x2107 => array(0x25B),
1011 0x2109 => array(0xB0, 0x66), 0x210B => array(0x68), 0x210C => array(0x68),
1012 0x210D => array(0x68), 0x2110 => array(0x69), 0x2111 => array(0x69),
1013 0x2112 => array(0x6C), 0x2115 => array(0x6E), 0x2116 => array(0x6E, 0x6F),
1014 0x2119 => array(0x70), 0x211A => array(0x71), 0x211B => array(0x72),
1015 0x211C => array(0x72), 0x211D => array(0x72), 0x2120 => array(0x73, 0x6D),
1016 0x2121 => array(0x74, 0x65, 0x6C), 0x2122 => array(0x74, 0x6D), 0x2124 => array(0x7A),
1017 0x2126 => array(0x3C9), 0x2128 => array(0x7A), 0x212A => array(0x6B),
1018 0x212B => array(0xE5), 0x212C => array(0x62), 0x212D => array(0x63),
1019 0x2130 => array(0x65), 0x2131 => array(0x66), 0x2133 => array(0x6D),
1020 0x213E => array(0x3B3), 0x213F => array(0x3C0), 0x2145 => array(0x64),
1021 0x2160 => array(0x2170), 0x2161 => array(0x2171), 0x2162 => array(0x2172),
1022 0x2163 => array(0x2173), 0x2164 => array(0x2174), 0x2165 => array(0x2175),
1023 0x2166 => array(0x2176), 0x2167 => array(0x2177), 0x2168 => array(0x2178),
1024 0x2169 => array(0x2179), 0x216A => array(0x217A), 0x216B => array(0x217B),
1025 0x216C => array(0x217C), 0x216D => array(0x217D), 0x216E => array(0x217E),
1026 0x216F => array(0x217F), 0x24B6 => array(0x24D0), 0x24B7 => array(0x24D1),
1027 0x24B8 => array(0x24D2), 0x24B9 => array(0x24D3), 0x24BA => array(0x24D4),
1028 0x24BB => array(0x24D5), 0x24BC => array(0x24D6), 0x24BD => array(0x24D7),
1029 0x24BE => array(0x24D8), 0x24BF => array(0x24D9), 0x24C0 => array(0x24DA),
1030 0x24C1 => array(0x24DB), 0x24C2 => array(0x24DC), 0x24C3 => array(0x24DD),
1031 0x24C4 => array(0x24DE), 0x24C5 => array(0x24DF), 0x24C6 => array(0x24E0),
1032 0x24C7 => array(0x24E1), 0x24C8 => array(0x24E2), 0x24C9 => array(0x24E3),
1033 0x24CA => array(0x24E4), 0x24CB => array(0x24E5), 0x24CC => array(0x24E6),
1034 0x24CD => array(0x24E7), 0x24CE => array(0x24E8), 0x24CF => array(0x24E9),
1035 0x3371 => array(0x68, 0x70, 0x61), 0x3373 => array(0x61, 0x75),
1036 0x3375 => array(0x6F, 0x76), 0x3380 => array(0x70, 0x61), 0x3381 => array(0x6E, 0x61),
1037 0x3382 => array(0x3BC, 0x61), 0x3383 => array(0x6D, 0x61), 0x3384 => array(0x6B, 0x61),
1038 0x3385 => array(0x6B, 0x62), 0x3386 => array(0x6D, 0x62), 0x3387 => array(0x67, 0x62),
1039 0x338A => array(0x70, 0x66), 0x338B => array(0x6E, 0x66), 0x338C => array(0x3BC, 0x66),
1040 0x3390 => array(0x68, 0x7A), 0x3391 => array(0x6B, 0x68, 0x7A),
1041 0x3392 => array(0x6D, 0x68, 0x7A), 0x3393 => array(0x67, 0x68, 0x7A),
1042 0x3394 => array(0x74, 0x68, 0x7A), 0x33A9 => array(0x70, 0x61),
1043 0x33AA => array(0x6B, 0x70, 0x61), 0x33AB => array(0x6D, 0x70, 0x61),
1044 0x33AC => array(0x67, 0x70, 0x61), 0x33B4 => array(0x70, 0x76),
1045 0x33B5 => array(0x6E, 0x76), 0x33B6 => array(0x3BC, 0x76), 0x33B7 => array(0x6D, 0x76),
1046 0x33B8 => array(0x6B, 0x76), 0x33B9 => array(0x6D, 0x76), 0x33BA => array(0x70, 0x77),
1047 0x33BB => array(0x6E, 0x77), 0x33BC => array(0x3BC, 0x77), 0x33BD => array(0x6D, 0x77),
1048 0x33BE => array(0x6B, 0x77), 0x33BF => array(0x6D, 0x77), 0x33C0 => array(0x6B, 0x3C9),
1049 0x33C1 => array(0x6D, 0x3C9), 0x33C3 => array(0x62, 0x71),
1050 0x33C6 => array(0x63, 0x2215, 0x6B, 0x67), 0x33C7 => array(0x63, 0x6F, 0x2E),
1051 0x33C8 => array(0x64, 0x62), 0x33C9 => array(0x67, 0x79), 0x33CB => array(0x68, 0x70),
1052 0x33CD => array(0x6B, 0x6B), 0x33CE => array(0x6B, 0x6D), 0x33D7 => array(0x70, 0x68),
1053 0x33D9 => array(0x70, 0x70, 0x6D), 0x33DA => array(0x70, 0x72),
1054 0x33DC => array(0x73, 0x76), 0x33DD => array(0x77, 0x62), 0xFB00 => array(0x66, 0x66),
1055 0xFB01 => array(0x66, 0x69), 0xFB02 => array(0x66, 0x6C),
1056 0xFB03 => array(0x66, 0x66, 0x69), 0xFB04 => array(0x66, 0x66, 0x6C),
1057 0xFB05 => array(0x73, 0x74), 0xFB06 => array(0x73, 0x74), 0xFB13 => array(0x574, 0x576),
1058 0xFB14 => array(0x574, 0x565), 0xFB15 => array(0x574, 0x56B),
1059 0xFB16 => array(0x57E, 0x576), 0xFB17 => array(0x574, 0x56D), 0xFF21 => array(0xFF41),
1060 0xFF22 => array(0xFF42), 0xFF23 => array(0xFF43), 0xFF24 => array(0xFF44),
1061 0xFF25 => array(0xFF45), 0xFF26 => array(0xFF46), 0xFF27 => array(0xFF47),
1062 0xFF28 => array(0xFF48), 0xFF29 => array(0xFF49), 0xFF2A => array(0xFF4A),
1063 0xFF2B => array(0xFF4B), 0xFF2C => array(0xFF4C), 0xFF2D => array(0xFF4D),
1064 0xFF2E => array(0xFF4E), 0xFF2F => array(0xFF4F), 0xFF30 => array(0xFF50),
1065 0xFF31 => array(0xFF51), 0xFF32 => array(0xFF52), 0xFF33 => array(0xFF53),
1066 0xFF34 => array(0xFF54), 0xFF35 => array(0xFF55), 0xFF36 => array(0xFF56),
1067 0xFF37 => array(0xFF57), 0xFF38 => array(0xFF58), 0xFF39 => array(0xFF59),
1068 0xFF3A => array(0xFF5A), 0x10400 => array(0x10428), 0x10401 => array(0x10429),
1069 0x10402 => array(0x1042A), 0x10403 => array(0x1042B), 0x10404 => array(0x1042C),
1070 0x10405 => array(0x1042D), 0x10406 => array(0x1042E), 0x10407 => array(0x1042F),
1071 0x10408 => array(0x10430), 0x10409 => array(0x10431), 0x1040A => array(0x10432),
1072 0x1040B => array(0x10433), 0x1040C => array(0x10434), 0x1040D => array(0x10435),
1073 0x1040E => array(0x10436), 0x1040F => array(0x10437), 0x10410 => array(0x10438),
1074 0x10411 => array(0x10439), 0x10412 => array(0x1043A), 0x10413 => array(0x1043B),
1075 0x10414 => array(0x1043C), 0x10415 => array(0x1043D), 0x10416 => array(0x1043E),
1076 0x10417 => array(0x1043F), 0x10418 => array(0x10440), 0x10419 => array(0x10441),
1077 0x1041A => array(0x10442), 0x1041B => array(0x10443), 0x1041C => array(0x10444),
1078 0x1041D => array(0x10445), 0x1041E => array(0x10446), 0x1041F => array(0x10447),
1079 0x10420 => array(0x10448), 0x10421 => array(0x10449), 0x10422 => array(0x1044A),
1080 0x10423 => array(0x1044B), 0x10424 => array(0x1044C), 0x10425 => array(0x1044D),
1081 0x1D400 => array(0x61), 0x1D401 => array(0x62), 0x1D402 => array(0x63),
1082 0x1D403 => array(0x64), 0x1D404 => array(0x65), 0x1D405 => array(0x66),
1083 0x1D406 => array(0x67), 0x1D407 => array(0x68), 0x1D408 => array(0x69),
1084 0x1D409 => array(0x6A), 0x1D40A => array(0x6B), 0x1D40B => array(0x6C),
1085 0x1D40C => array(0x6D), 0x1D40D => array(0x6E), 0x1D40E => array(0x6F),
1086 0x1D40F => array(0x70), 0x1D410 => array(0x71), 0x1D411 => array(0x72),
1087 0x1D412 => array(0x73), 0x1D413 => array(0x74), 0x1D414 => array(0x75),
1088 0x1D415 => array(0x76), 0x1D416 => array(0x77), 0x1D417 => array(0x78),
1089 0x1D418 => array(0x79), 0x1D419 => array(0x7A), 0x1D434 => array(0x61),
1090 0x1D435 => array(0x62), 0x1D436 => array(0x63), 0x1D437 => array(0x64),
1091 0x1D438 => array(0x65), 0x1D439 => array(0x66), 0x1D43A => array(0x67),
1092 0x1D43B => array(0x68), 0x1D43C => array(0x69), 0x1D43D => array(0x6A),
1093 0x1D43E => array(0x6B), 0x1D43F => array(0x6C), 0x1D440 => array(0x6D),
1094 0x1D441 => array(0x6E), 0x1D442 => array(0x6F), 0x1D443 => array(0x70),
1095 0x1D444 => array(0x71), 0x1D445 => array(0x72), 0x1D446 => array(0x73),
1096 0x1D447 => array(0x74), 0x1D448 => array(0x75), 0x1D449 => array(0x76),
1097 0x1D44A => array(0x77), 0x1D44B => array(0x78), 0x1D44C => array(0x79),
1098 0x1D44D => array(0x7A), 0x1D468 => array(0x61), 0x1D469 => array(0x62),
1099 0x1D46A => array(0x63), 0x1D46B => array(0x64), 0x1D46C => array(0x65),
1100 0x1D46D => array(0x66), 0x1D46E => array(0x67), 0x1D46F => array(0x68),
1101 0x1D470 => array(0x69), 0x1D471 => array(0x6A), 0x1D472 => array(0x6B),
1102 0x1D473 => array(0x6C), 0x1D474 => array(0x6D), 0x1D475 => array(0x6E),
1103 0x1D476 => array(0x6F), 0x1D477 => array(0x70), 0x1D478 => array(0x71),
1104 0x1D479 => array(0x72), 0x1D47A => array(0x73), 0x1D47B => array(0x74),
1105 0x1D47C => array(0x75), 0x1D47D => array(0x76), 0x1D47E => array(0x77),
1106 0x1D47F => array(0x78), 0x1D480 => array(0x79), 0x1D481 => array(0x7A),
1107 0x1D49C => array(0x61), 0x1D49E => array(0x63), 0x1D49F => array(0x64),
1108 0x1D4A2 => array(0x67), 0x1D4A5 => array(0x6A), 0x1D4A6 => array(0x6B),
1109 0x1D4A9 => array(0x6E), 0x1D4AA => array(0x6F), 0x1D4AB => array(0x70),
1110 0x1D4AC => array(0x71), 0x1D4AE => array(0x73), 0x1D4AF => array(0x74),
1111 0x1D4B0 => array(0x75), 0x1D4B1 => array(0x76), 0x1D4B2 => array(0x77),
1112 0x1D4B3 => array(0x78), 0x1D4B4 => array(0x79), 0x1D4B5 => array(0x7A),
1113 0x1D4D0 => array(0x61), 0x1D4D1 => array(0x62), 0x1D4D2 => array(0x63),
1114 0x1D4D3 => array(0x64), 0x1D4D4 => array(0x65), 0x1D4D5 => array(0x66),
1115 0x1D4D6 => array(0x67), 0x1D4D7 => array(0x68), 0x1D4D8 => array(0x69),
1116 0x1D4D9 => array(0x6A), 0x1D4DA => array(0x6B), 0x1D4DB => array(0x6C),
1117 0x1D4DC => array(0x6D), 0x1D4DD => array(0x6E), 0x1D4DE => array(0x6F),
1118 0x1D4DF => array(0x70), 0x1D4E0 => array(0x71), 0x1D4E1 => array(0x72),
1119 0x1D4E2 => array(0x73), 0x1D4E3 => array(0x74), 0x1D4E4 => array(0x75),
1120 0x1D4E5 => array(0x76), 0x1D4E6 => array(0x77), 0x1D4E7 => array(0x78),
1121 0x1D4E8 => array(0x79), 0x1D4E9 => array(0x7A), 0x1D504 => array(0x61),
1122 0x1D505 => array(0x62), 0x1D507 => array(0x64), 0x1D508 => array(0x65),
1123 0x1D509 => array(0x66), 0x1D50A => array(0x67), 0x1D50D => array(0x6A),
1124 0x1D50E => array(0x6B), 0x1D50F => array(0x6C), 0x1D510 => array(0x6D),
1125 0x1D511 => array(0x6E), 0x1D512 => array(0x6F), 0x1D513 => array(0x70),
1126 0x1D514 => array(0x71), 0x1D516 => array(0x73), 0x1D517 => array(0x74),
1127 0x1D518 => array(0x75), 0x1D519 => array(0x76), 0x1D51A => array(0x77),
1128 0x1D51B => array(0x78), 0x1D51C => array(0x79), 0x1D538 => array(0x61),
1129 0x1D539 => array(0x62), 0x1D53B => array(0x64), 0x1D53C => array(0x65),
1130 0x1D53D => array(0x66), 0x1D53E => array(0x67), 0x1D540 => array(0x69),
1131 0x1D541 => array(0x6A), 0x1D542 => array(0x6B), 0x1D543 => array(0x6C),
1132 0x1D544 => array(0x6D), 0x1D546 => array(0x6F), 0x1D54A => array(0x73),
1133 0x1D54B => array(0x74), 0x1D54C => array(0x75), 0x1D54D => array(0x76),
1134 0x1D54E => array(0x77), 0x1D54F => array(0x78), 0x1D550 => array(0x79),
1135 0x1D56C => array(0x61), 0x1D56D => array(0x62), 0x1D56E => array(0x63),
1136 0x1D56F => array(0x64), 0x1D570 => array(0x65), 0x1D571 => array(0x66),
1137 0x1D572 => array(0x67), 0x1D573 => array(0x68), 0x1D574 => array(0x69),
1138 0x1D575 => array(0x6A), 0x1D576 => array(0x6B), 0x1D577 => array(0x6C),
1139 0x1D578 => array(0x6D), 0x1D579 => array(0x6E), 0x1D57A => array(0x6F),
1140 0x1D57B => array(0x70), 0x1D57C => array(0x71), 0x1D57D => array(0x72),
1141 0x1D57E => array(0x73), 0x1D57F => array(0x74), 0x1D580 => array(0x75),
1142 0x1D581 => array(0x76), 0x1D582 => array(0x77), 0x1D583 => array(0x78),
1143 0x1D584 => array(0x79), 0x1D585 => array(0x7A), 0x1D5A0 => array(0x61),
1144 0x1D5A1 => array(0x62), 0x1D5A2 => array(0x63), 0x1D5A3 => array(0x64),
1145 0x1D5A4 => array(0x65), 0x1D5A5 => array(0x66), 0x1D5A6 => array(0x67),
1146 0x1D5A7 => array(0x68), 0x1D5A8 => array(0x69), 0x1D5A9 => array(0x6A),
1147 0x1D5AA => array(0x6B), 0x1D5AB => array(0x6C), 0x1D5AC => array(0x6D),
1148 0x1D5AD => array(0x6E), 0x1D5AE => array(0x6F), 0x1D5AF => array(0x70),
1149 0x1D5B0 => array(0x71), 0x1D5B1 => array(0x72), 0x1D5B2 => array(0x73),
1150 0x1D5B3 => array(0x74), 0x1D5B4 => array(0x75), 0x1D5B5 => array(0x76),
1151 0x1D5B6 => array(0x77), 0x1D5B7 => array(0x78), 0x1D5B8 => array(0x79),
1152 0x1D5B9 => array(0x7A), 0x1D5D4 => array(0x61), 0x1D5D5 => array(0x62),
1153 0x1D5D6 => array(0x63), 0x1D5D7 => array(0x64), 0x1D5D8 => array(0x65),
1154 0x1D5D9 => array(0x66), 0x1D5DA => array(0x67), 0x1D5DB => array(0x68),
1155 0x1D5DC => array(0x69), 0x1D5DD => array(0x6A), 0x1D5DE => array(0x6B),
1156 0x1D5DF => array(0x6C), 0x1D5E0 => array(0x6D), 0x1D5E1 => array(0x6E),
1157 0x1D5E2 => array(0x6F), 0x1D5E3 => array(0x70), 0x1D5E4 => array(0x71),
1158 0x1D5E5 => array(0x72), 0x1D5E6 => array(0x73), 0x1D5E7 => array(0x74),
1159 0x1D5E8 => array(0x75), 0x1D5E9 => array(0x76), 0x1D5EA => array(0x77),
1160 0x1D5EB => array(0x78), 0x1D5EC => array(0x79), 0x1D5ED => array(0x7A),
1161 0x1D608 => array(0x61), 0x1D609 => array(0x62) ,0x1D60A => array(0x63),
1162 0x1D60B => array(0x64), 0x1D60C => array(0x65), 0x1D60D => array(0x66),
1163 0x1D60E => array(0x67), 0x1D60F => array(0x68), 0x1D610 => array(0x69),
1164 0x1D611 => array(0x6A), 0x1D612 => array(0x6B), 0x1D613 => array(0x6C),
1165 0x1D614 => array(0x6D), 0x1D615 => array(0x6E), 0x1D616 => array(0x6F),
1166 0x1D617 => array(0x70), 0x1D618 => array(0x71), 0x1D619 => array(0x72),
1167 0x1D61A => array(0x73), 0x1D61B => array(0x74), 0x1D61C => array(0x75),
1168 0x1D61D => array(0x76), 0x1D61E => array(0x77), 0x1D61F => array(0x78),
1169 0x1D620 => array(0x79), 0x1D621 => array(0x7A), 0x1D63C => array(0x61),
1170 0x1D63D => array(0x62), 0x1D63E => array(0x63), 0x1D63F => array(0x64),
1171 0x1D640 => array(0x65), 0x1D641 => array(0x66), 0x1D642 => array(0x67),
1172 0x1D643 => array(0x68), 0x1D644 => array(0x69), 0x1D645 => array(0x6A),
1173 0x1D646 => array(0x6B), 0x1D647 => array(0x6C), 0x1D648 => array(0x6D),
1174 0x1D649 => array(0x6E), 0x1D64A => array(0x6F), 0x1D64B => array(0x70),
1175 0x1D64C => array(0x71), 0x1D64D => array(0x72), 0x1D64E => array(0x73),
1176 0x1D64F => array(0x74), 0x1D650 => array(0x75), 0x1D651 => array(0x76),
1177 0x1D652 => array(0x77), 0x1D653 => array(0x78), 0x1D654 => array(0x79),
1178 0x1D655 => array(0x7A), 0x1D670 => array(0x61), 0x1D671 => array(0x62),
1179 0x1D672 => array(0x63), 0x1D673 => array(0x64), 0x1D674 => array(0x65),
1180 0x1D675 => array(0x66), 0x1D676 => array(0x67), 0x1D677 => array(0x68),
1181 0x1D678 => array(0x69), 0x1D679 => array(0x6A), 0x1D67A => array(0x6B),
1182 0x1D67B => array(0x6C), 0x1D67C => array(0x6D), 0x1D67D => array(0x6E),
1183 0x1D67E => array(0x6F), 0x1D67F => array(0x70), 0x1D680 => array(0x71),
1184 0x1D681 => array(0x72), 0x1D682 => array(0x73), 0x1D683 => array(0x74),
1185 0x1D684 => array(0x75), 0x1D685 => array(0x76), 0x1D686 => array(0x77),
1186 0x1D687 => array(0x78), 0x1D688 => array(0x79), 0x1D689 => array(0x7A),
1187 0x1D6A8 => array(0x3B1), 0x1D6A9 => array(0x3B2), 0x1D6AA => array(0x3B3),
1188 0x1D6AB => array(0x3B4), 0x1D6AC => array(0x3B5), 0x1D6AD => array(0x3B6),
1189 0x1D6AE => array(0x3B7), 0x1D6AF => array(0x3B8), 0x1D6B0 => array(0x3B9),
1190 0x1D6B1 => array(0x3BA), 0x1D6B2 => array(0x3BB), 0x1D6B3 => array(0x3BC),
1191 0x1D6B4 => array(0x3BD), 0x1D6B5 => array(0x3BE), 0x1D6B6 => array(0x3BF),
1192 0x1D6B7 => array(0x3C0), 0x1D6B8 => array(0x3C1), 0x1D6B9 => array(0x3B8),
1193 0x1D6BA => array(0x3C3), 0x1D6BB => array(0x3C4), 0x1D6BC => array(0x3C5),
1194 0x1D6BD => array(0x3C6), 0x1D6BE => array(0x3C7), 0x1D6BF => array(0x3C8),
1195 0x1D6C0 => array(0x3C9), 0x1D6D3 => array(0x3C3), 0x1D6E2 => array(0x3B1),
1196 0x1D6E3 => array(0x3B2), 0x1D6E4 => array(0x3B3), 0x1D6E5 => array(0x3B4),
1197 0x1D6E6 => array(0x3B5), 0x1D6E7 => array(0x3B6), 0x1D6E8 => array(0x3B7),
1198 0x1D6E9 => array(0x3B8), 0x1D6EA => array(0x3B9), 0x1D6EB => array(0x3BA),
1199 0x1D6EC => array(0x3BB), 0x1D6ED => array(0x3BC), 0x1D6EE => array(0x3BD),
1200 0x1D6EF => array(0x3BE), 0x1D6F0 => array(0x3BF), 0x1D6F1 => array(0x3C0),
1201 0x1D6F2 => array(0x3C1), 0x1D6F3 => array(0x3B8) ,0x1D6F4 => array(0x3C3),
1202 0x1D6F5 => array(0x3C4), 0x1D6F6 => array(0x3C5), 0x1D6F7 => array(0x3C6),
1203 0x1D6F8 => array(0x3C7), 0x1D6F9 => array(0x3C8) ,0x1D6FA => array(0x3C9),
1204 0x1D70D => array(0x3C3), 0x1D71C => array(0x3B1), 0x1D71D => array(0x3B2),
1205 0x1D71E => array(0x3B3), 0x1D71F => array(0x3B4), 0x1D720 => array(0x3B5),
1206 0x1D721 => array(0x3B6), 0x1D722 => array(0x3B7), 0x1D723 => array(0x3B8),
1207 0x1D724 => array(0x3B9), 0x1D725 => array(0x3BA), 0x1D726 => array(0x3BB),
1208 0x1D727 => array(0x3BC), 0x1D728 => array(0x3BD), 0x1D729 => array(0x3BE),
1209 0x1D72A => array(0x3BF), 0x1D72B => array(0x3C0), 0x1D72C => array(0x3C1),
1210 0x1D72D => array(0x3B8), 0x1D72E => array(0x3C3), 0x1D72F => array(0x3C4),
1211 0x1D730 => array(0x3C5), 0x1D731 => array(0x3C6), 0x1D732 => array(0x3C7),
1212 0x1D733 => array(0x3C8), 0x1D734 => array(0x3C9), 0x1D747 => array(0x3C3),
1213 0x1D756 => array(0x3B1), 0x1D757 => array(0x3B2), 0x1D758 => array(0x3B3),
1214 0x1D759 => array(0x3B4), 0x1D75A => array(0x3B5), 0x1D75B => array(0x3B6),
1215 0x1D75C => array(0x3B7), 0x1D75D => array(0x3B8), 0x1D75E => array(0x3B9),
1216 0x1D75F => array(0x3BA), 0x1D760 => array(0x3BB), 0x1D761 => array(0x3BC),
1217 0x1D762 => array(0x3BD), 0x1D763 => array(0x3BE), 0x1D764 => array(0x3BF),
1218 0x1D765 => array(0x3C0), 0x1D766 => array(0x3C1), 0x1D767 => array(0x3B8),
1219 0x1D768 => array(0x3C3), 0x1D769 => array(0x3C4), 0x1D76A => array(0x3C5),
1220 0x1D76B => array(0x3C6), 0x1D76C => array(0x3C7), 0x1D76D => array(0x3C8),
1221 0x1D76E => array(0x3C9), 0x1D781 => array(0x3C3), 0x1D790 => array(0x3B1),
1222 0x1D791 => array(0x3B2), 0x1D792 => array(0x3B3), 0x1D793 => array(0x3B4),
1223 0x1D794 => array(0x3B5), 0x1D795 => array(0x3B6), 0x1D796 => array(0x3B7),
1224 0x1D797 => array(0x3B8), 0x1D798 => array(0x3B9), 0x1D799 => array(0x3BA),
1225 0x1D79A => array(0x3BB), 0x1D79B => array(0x3BC), 0x1D79C => array(0x3BD),
1226 0x1D79D => array(0x3BE), 0x1D79E => array(0x3BF), 0x1D79F => array(0x3C0),
1227 0x1D7A0 => array(0x3C1), 0x1D7A1 => array(0x3B8), 0x1D7A2 => array(0x3C3),
1228 0x1D7A3 => array(0x3C4), 0x1D7A4 => array(0x3C5), 0x1D7A5 => array(0x3C6),
1229 0x1D7A6 => array(0x3C7), 0x1D7A7 => array(0x3C8), 0x1D7A8 => array(0x3C9),
1230 0x1D7BB => array(0x3C3), 0x3F9 => array(0x3C3), 0x1D2C => array(0x61),
1231 0x1D2D => array(0xE6), 0x1D2E => array(0x62), 0x1D30 => array(0x64),
1232 0x1D31 => array(0x65), 0x1D32 => array(0x1DD), 0x1D33 => array(0x67),
1233 0x1D34 => array(0x68), 0x1D35 => array(0x69), 0x1D36 => array(0x6A),
1234 0x1D37 => array(0x6B), 0x1D38 => array(0x6C), 0x1D39 => array(0x6D),
1235 0x1D3A => array(0x6E), 0x1D3C => array(0x6F), 0x1D3D => array(0x223),
1236 0x1D3E => array(0x70), 0x1D3F => array(0x72), 0x1D40 => array(0x74),
1237 0x1D41 => array(0x75), 0x1D42 => array(0x77), 0x213B => array(0x66, 0x61, 0x78),
1238 0x3250 => array(0x70, 0x74, 0x65), 0x32CC => array(0x68, 0x67),
1239 0x32CE => array(0x65, 0x76), 0x32CF => array(0x6C, 0x74, 0x64),
1240 0x337A => array(0x69, 0x75), 0x33DE => array(0x76, 0x2215, 0x6D),
1241 0x33DF => array(0x61, 0x2215, 0x6D)
1242 ),
1243 'CombiningClass' => array(
1244 0x334 => 1, 0x335 => 1, 0x336 => 1, 0x337 => 1, 0x338 => 1, 0x93C => 7, 0x9BC => 7,
1245 0xA3C => 7, 0xABC => 7, 0xB3C => 7, 0xCBC => 7, 0x1037 => 7, 0x3099 => 8,
1246 0x309A => 8, 0x94D => 9, 0x9CD => 9, 0xA4D => 9, 0xACD => 9, 0xB4D => 9, 0xBCD => 9,
1247 0xC4D => 9, 0xCCD => 9, 0xD4D => 9, 0xDCA => 9, 0xE3A => 9, 0xF84 => 9, 0x1039 => 9,
1248 0x1714 => 9, 0x1734 => 9, 0x17D2 => 9, 0x5B0 => 10, 0x5B1 => 11, 0x5B2 => 12,
1249 0x5B3 => 13, 0x5B4 => 14, 0x5B5 => 15, 0x5B6 => 16, 0x5B7 => 17, 0x5B8 => 18,
1250 0x5B9 => 19, 0x5BB => 20, 0x5Bc => 21, 0x5BD => 22, 0x5BF => 23, 0x5C1 => 24,
1251 0x5C2 => 25, 0xFB1E => 26, 0x64B => 27, 0x64C => 28, 0x64D => 29, 0x64E => 30,
1252 0x64F => 31, 0x650 => 32, 0x651 => 33, 0x652 => 34, 0x670 => 35, 0x711 => 36,
1253 0xC55 => 84, 0xC56 => 91, 0xE38 => 103, 0xE39 => 103, 0xE48 => 107, 0xE49 => 107,
1254 0xE4A => 107, 0xE4B => 107, 0xEB8 => 118, 0xEB9 => 118, 0xEC8 => 122, 0xEC9 => 122,
1255 0xECA => 122, 0xECB => 122, 0xF71 => 129, 0xF72 => 130, 0xF7A => 130, 0xF7B => 130,
1256 0xF7C => 130, 0xF7D => 130, 0xF80 => 130, 0xF74 => 132, 0x321 => 202, 0x322 => 202,
1257 0x327 => 202, 0x328 => 202, 0x31B => 216, 0xF39 => 216, 0x1D165 => 216, 0x1D166 => 216,
1258 0x1D16E => 216, 0x1D16F => 216, 0x1D170 => 216, 0x1D171 => 216, 0x1D172 => 216,
1259 0x302A => 218, 0x316 => 220, 0x317 => 220, 0x318 => 220, 0x319 => 220, 0x31C => 220,
1260 0x31D => 220, 0x31E => 220, 0x31F => 220, 0x320 => 220, 0x323 => 220, 0x324 => 220,
1261 0x325 => 220, 0x326 => 220, 0x329 => 220, 0x32A => 220, 0x32B => 220, 0x32C => 220,
1262 0x32D => 220, 0x32E => 220, 0x32F => 220, 0x330 => 220, 0x331 => 220, 0x332 => 220,
1263 0x333 => 220, 0x339 => 220, 0x33A => 220, 0x33B => 220, 0x33C => 220, 0x347 => 220,
1264 0x348 => 220, 0x349 => 220, 0x34D => 220, 0x34E => 220, 0x353 => 220, 0x354 => 220,
1265 0x355 => 220, 0x356 => 220, 0x591 => 220, 0x596 => 220, 0x59B => 220, 0x5A3 => 220,
1266 0x5A4 => 220, 0x5A5 => 220, 0x5A6 => 220, 0x5A7 => 220, 0x5AA => 220, 0x655 => 220,
1267 0x656 => 220, 0x6E3 => 220, 0x6EA => 220, 0x6ED => 220, 0x731 => 220, 0x734 => 220,
1268 0x737 => 220, 0x738 => 220, 0x739 => 220, 0x73B => 220, 0x73C => 220, 0x73E => 220,
1269 0x742 => 220, 0x744 => 220, 0x746 => 220, 0x748 => 220, 0x952 => 220, 0xF18 => 220,
1270 0xF19 => 220, 0xF35 => 220, 0xF37 => 220, 0xFC6 => 220, 0x193B => 220, 0x20E8 => 220,
1271 0x1D17B => 220, 0x1D17C => 220, 0x1D17D => 220, 0x1D17E => 220, 0x1D17F => 220,
1272 0x1D180 => 220, 0x1D181 => 220, 0x1D182 => 220, 0x1D18A => 220, 0x1D18B => 220,
1273 0x59A => 222, 0x5AD => 222, 0x1929 => 222, 0x302D => 222, 0x302E => 224, 0x302F => 224,
1274 0x1D16D => 226, 0x5AE => 228, 0x18A9 => 228, 0x302B => 228, 0x300 => 230, 0x301 => 230,
1275 0x302 => 230, 0x303 => 230, 0x304 => 230, 0x305 => 230, 0x306 => 230, 0x307 => 230,
1276 0x308 => 230, 0x309 => 230, 0x30A => 230, 0x30B => 230, 0x30C => 230, 0x30D => 230,
1277 0x30E => 230, 0x30F => 230, 0x310 => 230, 0x311 => 230, 0x312 => 230, 0x313 => 230,
1278 0x314 => 230, 0x33D => 230, 0x33E => 230, 0x33F => 230, 0x340 => 230, 0x341 => 230,
1279 0x342 => 230, 0x343 => 230, 0x344 => 230, 0x346 => 230, 0x34A => 230, 0x34B => 230,
1280 0x34C => 230, 0x350 => 230, 0x351 => 230, 0x352 => 230, 0x357 => 230, 0x363 => 230,
1281 0x364 => 230, 0x365 => 230, 0x366 => 230, 0x367 => 230, 0x368 => 230, 0x369 => 230,
1282 0x36A => 230, 0x36B => 230, 0x36C => 230, 0x36D => 230, 0x36E => 230, 0x36F => 230,
1283 0x483 => 230, 0x484 => 230, 0x485 => 230, 0x486 => 230, 0x592 => 230, 0x593 => 230,
1284 0x594 => 230, 0x595 => 230, 0x597 => 230, 0x598 => 230, 0x599 => 230, 0x59C => 230,
1285 0x59D => 230, 0x59E => 230, 0x59F => 230, 0x5A0 => 230, 0x5A1 => 230, 0x5A8 => 230,
1286 0x5A9 => 230, 0x5AB => 230, 0x5AC => 230, 0x5AF => 230, 0x5C4 => 230, 0x610 => 230,
1287 0x611 => 230, 0x612 => 230, 0x613 => 230, 0x614 => 230, 0x615 => 230, 0x653 => 230,
1288 0x654 => 230, 0x657 => 230, 0x658 => 230, 0x6D6 => 230, 0x6D7 => 230, 0x6D8 => 230,
1289 0x6D9 => 230, 0x6DA => 230, 0x6DB => 230, 0x6DC => 230, 0x6DF => 230, 0x6E0 => 230,
1290 0x6E1 => 230, 0x6E2 => 230, 0x6E4 => 230, 0x6E7 => 230, 0x6E8 => 230, 0x6EB => 230,
1291 0x6EC => 230, 0x730 => 230, 0x732 => 230, 0x733 => 230, 0x735 => 230, 0x736 => 230,
1292 0x73A => 230, 0x73D => 230, 0x73F => 230, 0x740 => 230, 0x741 => 230, 0x743 => 230,
1293 0x745 => 230, 0x747 => 230, 0x749 => 230, 0x74A => 230, 0x951 => 230, 0x953 => 230,
1294 0x954 => 230, 0xF82 => 230, 0xF83 => 230, 0xF86 => 230, 0xF87 => 230, 0x170D => 230,
1295 0x193A => 230, 0x20D0 => 230, 0x20D1 => 230, 0x20D4 => 230, 0x20D5 => 230,
1296 0x20D6 => 230, 0x20D7 => 230, 0x20DB => 230, 0x20DC => 230, 0x20E1 => 230,
1297 0x20E7 => 230, 0x20E9 => 230, 0xFE20 => 230, 0xFE21 => 230, 0xFE22 => 230,
1298 0xFE23 => 230, 0x1D185 => 230, 0x1D186 => 230, 0x1D187 => 230, 0x1D189 => 230,
1299 0x1D188 => 230, 0x1D1AA => 230, 0x1D1AB => 230, 0x1D1AC => 230, 0x1D1AD => 230,
1300 0x315 => 232, 0x31A => 232, 0x302C => 232, 0x35F => 233, 0x362 => 233, 0x35D => 234,
1301 0x35E => 234, 0x360 => 234, 0x361 => 234, 0x345 => 240
1302 )
1303 );
1304}
$arResult
Определения generate_coupon.php:16
static convertEncoding($data, $charsetFrom, $charsetTo)
Определения encoding.php:17
Определения punycode.php:4
const PREFIX
Определения punycode.php:5
__construct($encoding=null)
Определения punycode.php:91
Encode($domainName)
Определения punycode.php:213
GetErrors()
Определения punycode.php:728
Decode($domainName)
Определения punycode.php:153
IsEncoded($domainName)
Определения punycode.php:118
static ToUnicode($domainName, &$arErrors)
Определения punycode.php:65
static CheckASCII($domainName)
Определения punycode.php:85
static GetConverter()
Определения punycode.php:25
static ToASCII($domainName, &$arErrors)
Определения punycode.php:44
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$output
Определения options.php:436
$value
Определения Param.php:39
$delta
Определения prolog_main_admin.php:363
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$error
Определения subscription_card_product.php:20
$k
Определения template_pdf.php:567