b2evolution

Multilingual multiuser multiblog engine

b2evolution Technical Documentation (CVS HEAD) [ class tree: main ] [ index: main ] [ all elements ]

Source for file _idna_convert.class.php

Documentation is available at _idna_convert.class.php

  1. <?php
  2. // {{{ license
  3.  
  4. /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
  5. //
  6. // +----------------------------------------------------------------------+
  7. // | This library is free software; you can redistribute it and/or modify |
  8. // | it under the terms of the GNU Lesser General Public License as       |
  9. // | published by the Free Software Foundation; either version 2.1 of the |
  10. // | License, or (at your option) any later version.                      |
  11. // |                                                                      |
  12. // | This library is distributed in the hope that it will be useful, but  |
  13. // | WITHOUT ANY WARRANTY; without even the implied warranty of           |
  14. // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    |
  15. // | Lesser General Public License for more details.                      |
  16. // |                                                                      |
  17. // | You should have received a copy of the GNU Lesser General Public     |
  18. // | License along with this library; if not, write to the Free Software  |
  19. // | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 |
  20. // | USA.                                                                 |
  21. // +----------------------------------------------------------------------+
  22. //
  23.  
  24. // }}}
  25.  
  26. /**
  27.  * Encode/decode Internationalized Domain Names.
  28.  *
  29.  * The class allows to convert internationalized domain names
  30.  * (see RFC 3490 for details) as they can be used with various registries worldwide
  31.  * to be translated between their original (localized) form and their encoded form
  32.  * as it will be used in the DNS (Domain Name System).
  33.  *
  34.  * The class provides two public methods, encode() and decode(), which do exactly
  35.  * what you would expect them to do. You are allowed to use complete domain names,
  36.  * simple strings and complete email addresses as well. That means, that you might
  37.  * use any of the following notations:
  38.  *
  39.  * - www.nörgler.com
  40.  * - xn--nrgler-wxa
  41.  * - xn--brse-5qa.xn--knrz-1ra.info
  42.  *
  43.  * Unicode input might be given as either UTF-8 string, UCS-4 string or UCS-4
  44.  * array. Unicode output is available in the same formats.
  45.  * You can select your preferred format via {@link set_paramter()}.
  46.  *
  47.  * ACE input and output is always expected to be ASCII.
  48.  *
  49.  * @author  Matthias Sommerfeld <mso@phlylabs.de>
  50.  * @author  Leonid Kogan <lko@neuse.de>
  51.  * @copyright 2004-2009 phlyLabs Berlin, http://phlylabs.de
  52.  * @version 0.6.2
  53.  * @changelog since 0.5.1 class updated to PHP5/6 style should be compatible to PHP 4.3+
  54.  */
  55. {
  56.     // NP See below
  57.  
  58.     // Internal settings, do not mess with them
  59.     private $_punycode_prefix = 'xn--';
  60.     private $_invalid_ucs = 0x80000000;
  61.     private $_max_ucs = 0x10FFFF;
  62.     private $_base = 36;
  63.     private $_tmin = 1;
  64.     private $_tmax = 26;
  65.     private $_skew = 38;
  66.     private $_damp = 700;
  67.     private $_initial_bias = 72;
  68.     private $_initial_n = 0x80;
  69.     private $_sbase = 0xAC00;
  70.     private $_lbase = 0x1100;
  71.     private $_vbase = 0x1161;
  72.     private $_tbase = 0x11A7;
  73.     private $_lcount = 19;
  74.     private $_vcount = 21;
  75.     private $_tcount = 28;
  76.     private $_ncount = 588;   // _vcount * _tcount
  77.     private $_scount = 11172// _lcount * _tcount * _vcount
  78.     private $_error = false;
  79.  
  80.     // See {@link set_paramter()} for details of how to change the following
  81.     // settings from within your script / application
  82.     private $_api_encoding = 'utf8';  // Default input charset is UTF-8
  83.     private $_allow_overlong = false// Overlong UTF-8 encodings are forbidden
  84.     private $_strict_mode = false;    // Behave strict or not
  85.  
  86.  
  87.     /**
  88.      * the constructor
  89.      *
  90.      * @param array $options 
  91.      * @return boolean 
  92.      * @since 0.5.2
  93.      */
  94.     public function __construct($options false)
  95.     {
  96.         $this->slast $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount;
  97.         // If parameters are given, pass these to the respective method
  98.         if (is_array($options)) return $this->set_parameter($options);
  99.         return true;
  100.     }
  101.  
  102.     /**
  103.      * Sets a new option value. Available options and values:
  104.      * [encoding - Use either UTF-8, UCS4 as array or UCS4 as string as input ('utf8' for UTF-8,
  105.      *         'ucs4_string' and 'ucs4_array' respectively for UCS4); The output is always UTF-8]
  106.      * [overlong - Unicode does not allow unnecessarily long encodings of chars,
  107.      *             to allow this, set this parameter to true, else to false;
  108.      *             default is false.]
  109.      * [strict - true: strict mode, good for registration purposes - Causes errors
  110.      *           on failures; false: loose mode, ideal for "wildlife" applications
  111.      *           by silently ignoring errors and returning the original input instead
  112.      *
  113.      * @param    mixed     Parameter to set (string: single parameter; array of Parameter => Value pairs)
  114.      * @param    string    Value to use (if parameter 1 is a string)
  115.      * @return   boolean   true on success, false otherwise
  116.      */
  117.     public function set_parameter($option$value false)
  118.     {
  119.         if (!is_array($option)) {
  120.             $option array($option => $value);
  121.         }
  122.         foreach ($option as $k => $v{
  123.             switch ($k{
  124.             case 'encoding':
  125.                 switch ($v{
  126.                 case 'utf8':
  127.                 case 'ucs4_string':
  128.                 case 'ucs4_array':
  129.                     $this->_api_encoding = $v;
  130.                     break;
  131.                 default:
  132.                     $this->_error('Set Parameter: Unknown parameter '.$v.' for option '.$k);
  133.                     return false;
  134.                 }
  135.                 break;
  136.             case 'overlong':
  137.                 $this->_allow_overlong = ($vtrue false;
  138.                 break;
  139.             case 'strict':
  140.                 $this->_strict_mode = ($vtrue false;
  141.                 break;
  142.             default:
  143.                 $this->_error('Set Parameter: Unknown option '.$k);
  144.                 return false;
  145.             }
  146.         }
  147.         return true;
  148.     }
  149.  
  150.     /**
  151.      * Decode a given ACE domain name
  152.      * @param    string   Domain name (ACE string)
  153.      *  [@param    string   Desired output encoding, see {@link set_parameter}]
  154.      * @return   string   Decoded Domain name (UTF-8 or UCS-4)
  155.      */
  156.     public function decode($input$one_time_encoding false)
  157.     {
  158.         // Optionally set
  159.         if ($one_time_encoding{
  160.             switch ($one_time_encoding{
  161.             case 'utf8':
  162.             case 'ucs4_string':
  163.             case 'ucs4_array':
  164.                 break;
  165.             default:
  166.                 $this->_error('Unknown encoding '.$one_time_encoding);
  167.                 return false;
  168.             }
  169.         }
  170.         // Make sure to drop any newline characters around
  171.         $input trim($input);
  172.  
  173.         // Negotiate input and try to determine, whether it is a plain string,
  174.         // an email address or something like a complete URL
  175.         if (strpos($input'@')) // Maybe it is an email address
  176.             // No no in strict mode
  177.             if ($this->_strict_mode{
  178.                 $this->_error('Only simple domain name parts can be handled in strict mode');
  179.                 return false;
  180.             }
  181.             list ($email_pref$inputexplode('@'$input2);
  182.             $arr explode('.'$input);
  183.             foreach ($arr as $k => $v{
  184.                 if (preg_match('!^'.preg_quote($this->_punycode_prefix'!').'!'$v)) {
  185.                     $conv $this->_decode($v);
  186.                     if ($conv$arr[$k$conv;
  187.                 }
  188.             }
  189.             $input join('.'$arr);
  190.             $arr explode('.'$email_pref);
  191.             foreach ($arr as $k => $v{
  192.                 if (preg_match('!^'.preg_quote($this->_punycode_prefix'!').'!'$v)) {
  193.                     $conv $this->_decode($v);
  194.                     if ($conv$arr[$k$conv;
  195.                 }
  196.             }
  197.             $email_pref join('.'$arr);
  198.             $return $email_pref '@' $input;
  199.         elseif (preg_match('![:\./]!'$input)) // Or a complete domain name (with or without paths / parameters)
  200.             // No no in strict mode
  201.             if ($this->_strict_mode{
  202.                 $this->_error('Only simple domain name parts can be handled in strict mode');
  203.                 return false;
  204.             }
  205.             $parsed parse_url($input);
  206.             if (isset($parsed['host'])) {
  207.                 $arr explode('.'$parsed['host']);
  208.                 foreach ($arr as $k => $v{
  209.                     $conv $this->_decode($v);
  210.                     if ($conv$arr[$k$conv;
  211.                 }
  212.                 $parsed['host'join('.'$arr);
  213.                 $return =
  214.                         (empty($parsed['scheme']'' $parsed['scheme'].(strtolower($parsed['scheme']== 'mailto' ':' '://'))
  215.                         .(empty($parsed['user']'' $parsed['user'].(empty($parsed['pass']'' ':'.$parsed['pass']).'@')
  216.                         .$parsed['host']
  217.                         .(empty($parsed['port']'' ':'.$parsed['port'])
  218.                         .(empty($parsed['path']'' $parsed['path'])
  219.                         .(empty($parsed['query']'' '?'.$parsed['query'])
  220.                         .(empty($parsed['fragment']'' '#'.$parsed['fragment']);
  221.             else // parse_url seems to have failed, try without it
  222.                 $arr explode('.'$input);
  223.                 foreach ($arr as $k => $v{
  224.                     $conv $this->_decode($v);
  225.                     $arr[$k($conv$conv $v;
  226.                 }
  227.                 $return join('.'$arr);
  228.             }
  229.         else // Otherwise we consider it being a pure domain name string
  230.             $return $this->_decode($input);
  231.             if (!$return$return $input;
  232.         }
  233.         // The output is UTF-8 by default, other output formats need conversion here
  234.         // If one time encoding is given, use this, else the objects property
  235.         switch (($one_time_encoding$one_time_encoding $this->_api_encoding{
  236.         case 'utf8':
  237.             return $return;
  238.             break;
  239.         case 'ucs4_string':
  240.            return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return));
  241.            break;
  242.         case 'ucs4_array':
  243.             return $this->_utf8_to_ucs4($return);
  244.             break;
  245.         default:
  246.             $this->_error('Unsupported output format');
  247.             return false;
  248.         }
  249.     }
  250.  
  251.     /**
  252.      * Encode a given UTF-8 domain name
  253.      * @param    string   Domain name (UTF-8 or UCS-4)
  254.      *  [@param    string   Desired input encoding, see {@link set_parameter}]
  255.      * @return   string   Encoded Domain name (ACE string)
  256.      */
  257.     public function encode($decoded$one_time_encoding false)
  258.     {
  259.         // Forcing conversion of input to UCS4 array
  260.         // If one time encoding is given, use this, else the objects property
  261.         switch ($one_time_encoding $one_time_encoding $this->_api_encoding{
  262.         case 'utf8':
  263.             $decoded $this->_utf8_to_ucs4($decoded);
  264.             break;
  265.         case 'ucs4_string':
  266.            $decoded $this->_ucs4_string_to_ucs4($decoded);
  267.         case 'ucs4_array':
  268.            break;
  269.         default:
  270.             $this->_error('Unsupported input format: '.($one_time_encoding $one_time_encoding $this->_api_encoding));
  271.             return false;
  272.         }
  273.  
  274.         // No input, no output, what else did you expect?
  275.         if (empty($decoded)) return '';
  276.  
  277.         // Anchors for iteration
  278.         $last_begin 0;
  279.         // Output string
  280.         $output '';
  281.         foreach ($decoded as $k => $v{
  282.             // Make sure to use just the plain dot
  283.             switch($v{
  284.             case 0x3002:
  285.             case 0xFF0E:
  286.             case 0xFF61:
  287.                 $decoded[$k0x2E;
  288.                 // Right, no break here, the above are converted to dots anyway
  289.             // Stumbling across an anchoring character
  290.             case 0x2E:
  291.             case 0x2F:
  292.             case 0x3A:
  293.             case 0x3F:
  294.             case 0x40:
  295.                 // Neither email addresses nor URLs allowed in strict mode
  296.                 if ($this->_strict_mode{
  297.                    $this->_error('Neither email addresses nor URLs are allowed in strict mode.');
  298.                    return false;
  299.                 else {
  300.                     // Skip first char
  301.                     if ($k{
  302.                         $encoded '';
  303.                         $encoded $this->_encode(array_slice($decoded$last_begin(($k)-$last_begin)));
  304.                         if ($encoded{
  305.                             $output .= $encoded;
  306.                         else {
  307.                             $output .= $this->_ucs4_to_utf8(array_slice($decoded$last_begin(($k)-$last_begin)));
  308.                         }
  309.                         $output .= chr($decoded[$k]);
  310.                     }
  311.                     $last_begin $k 1;
  312.                 }
  313.             }
  314.         }
  315.         // Catch the rest of the string
  316.         if ($last_begin{
  317.             $inp_len sizeof($decoded);
  318.             $encoded '';
  319.             $encoded $this->_encode(array_slice($decoded$last_begin(($inp_len)-$last_begin)));
  320.             if ($encoded{
  321.                 $output .= $encoded;
  322.             else {
  323.                 $output .= $this->_ucs4_to_utf8(array_slice($decoded$last_begin(($inp_len)-$last_begin)));
  324.             }
  325.             return $output;
  326.         else {
  327.             if ($output $this->_encode($decoded)) {
  328.                 return $output;
  329.             else {
  330.                 return $this->_ucs4_to_utf8($decoded);
  331.             }
  332.         }
  333.     }
  334.  
  335.     /**
  336.      * Use this method to get the last error ocurred
  337.      * @param    void 
  338.      * @return   string   The last error, that occured
  339.      */
  340.     public function get_last_error()
  341.     {
  342.         return $this->_error;
  343.     }
  344.  
  345.     /**
  346.      * The actual decoding algorithm
  347.      * @param string 
  348.      * @return mixed 
  349.      */
  350.     private function _decode($encoded)
  351.     {
  352.         $decoded array();
  353.         // find the Punycode prefix
  354.         if (!preg_match('!^'.preg_quote($this->_punycode_prefix'!').'!'$encoded)) {
  355.             $this->_error('This is not a punycode string');
  356.             return false;
  357.         }
  358.         $encode_test preg_replace('!^'.preg_quote($this->_punycode_prefix'!').'!'''$encoded);
  359.         // If nothing left after removing the prefix, it is hopeless
  360.         if (!$encode_test{
  361.             $this->_error('The given encoded string was empty');
  362.             return false;
  363.         }
  364.         // Find last occurence of the delimiter
  365.         $delim_pos strrpos($encoded'-');
  366.         if ($delim_pos strlen($this->_punycode_prefix)) {
  367.             for ($k strlen($this->_punycode_prefix)$k $delim_pos++$k{
  368.                 $decoded[ord($encoded{$k});
  369.             }
  370.         }
  371.         $deco_len count($decoded);
  372.         $enco_len strlen($encoded);
  373.  
  374.         // Wandering through the strings; init
  375.         $is_first true;
  376.         $bias $this->_initial_bias;
  377.         $idx 0;
  378.         $char $this->_initial_n;
  379.  
  380.         for ($enco_idx ($delim_pos($delim_pos 10$enco_idx $enco_len++$deco_len{
  381.             for ($old_idx $idx$w 1$k $this->_base$k += $this->_base{
  382.                 $digit $this->_decode_digit($encoded{$enco_idx++});
  383.                 $idx += $digit $w;
  384.                 $t ($k <= $bias$this->_tmin :
  385.                         (($k >= $bias $this->_tmax$this->_tmax : ($k $bias));
  386.                 if ($digit $tbreak;
  387.                 $w = (int) ($w ($this->_base - $t));
  388.             }
  389.             $bias $this->_adapt($idx $old_idx$deco_len 1$is_first);
  390.             $is_first false;
  391.             $char += (int) ($idx ($deco_len 1));
  392.             $idx %= ($deco_len 1);
  393.             if ($deco_len 0{
  394.                 // Make room for the decoded char
  395.                 for ($i $deco_len$i $idx$i--$decoded[$i$decoded[($i 1)];
  396.             }
  397.             $decoded[$idx++$char;
  398.         }
  399.         return $this->_ucs4_to_utf8($decoded);
  400.     }
  401.  
  402.     /**
  403.      * The actual encoding algorithm
  404.      * @param  string 
  405.      * @return mixed 
  406.      */
  407.     private function _encode($decoded)
  408.     {
  409.         // We cannot encode a domain name containing the Punycode prefix
  410.         $extract strlen($this->_punycode_prefix);
  411.         $check_pref $this->_utf8_to_ucs4($this->_punycode_prefix);
  412.         $check_deco array_slice($decoded0$extract);
  413.  
  414.         if ($check_pref == $check_deco{
  415.             $this->_error('This is already a punycode string');
  416.             return false;
  417.         }
  418.         // We will not try to encode strings consisting of basic code points only
  419.         $encodable false;
  420.         foreach ($decoded as $k => $v{
  421.             if ($v 0x7a{
  422.                 $encodable true;
  423.                 break;
  424.             }
  425.         }
  426.         if (!$encodable{
  427.             $this->_error('The given string does not contain encodable chars');
  428.             return false;
  429.         }
  430.         // Do NAMEPREP
  431.         $decoded $this->_nameprep($decoded);
  432.         if (!$decoded || !is_array($decoded)) return false// NAMEPREP failed
  433.         $deco_len  count($decoded);
  434.         if (!$deco_lenreturn false// Empty array
  435.         $codecount 0// How many chars have been consumed
  436.         $encoded '';
  437.         // Copy all basic code points to output
  438.         for ($i 0$i $deco_len++$i{
  439.             $test $decoded[$i];
  440.             // Will match [-0-9a-zA-Z]
  441.             if ((0x2F $test && $test 0x40|| (0x40 $test && $test 0x5B)
  442.                     || (0x60 $test && $test <= 0x7B|| (0x2D == $test)) {
  443.                 $encoded .= chr($decoded[$i]);
  444.                 $codecount++;
  445.             }
  446.         }
  447.         if ($codecount == $deco_lenreturn $encoded// All codepoints were basic ones
  448.  
  449.         // Start with the prefix; copy it to output
  450.         $encoded $this->_punycode_prefix.$encoded;
  451.         // If we have basic code points in output, add an hyphen to the end
  452.         if ($codecount$encoded .= '-';
  453.         // Now find and encode all non-basic code points
  454.         $is_first true;
  455.         $cur_code $this->_initial_n;
  456.         $bias $this->_initial_bias;
  457.         $delta 0;
  458.         while ($codecount $deco_len{
  459.             // Find the smallest code point >= the current code point and
  460.             // remember the last ouccrence of it in the input
  461.             for ($i 0$next_code $this->_max_ucs$i $deco_len$i++{
  462.                 if ($decoded[$i>= $cur_code && $decoded[$i<= $next_code{
  463.                     $next_code $decoded[$i];
  464.                 }
  465.             }
  466.             $delta += ($next_code $cur_code($codecount 1);
  467.             $cur_code $next_code;
  468.  
  469.             // Scan input again and encode all characters whose code point is $cur_code
  470.             for ($i 0$i $deco_len$i++{
  471.                 if ($decoded[$i$cur_code{
  472.                     $delta++;
  473.                 elseif ($decoded[$i== $cur_code{
  474.                     for ($q $delta$k $this->_base1$k += $this->_base{
  475.                         $t ($k <= $bias$this->_tmin :
  476.                                 (($k >= $bias $this->_tmax$this->_tmax : $k $bias);
  477.                         if ($q $tbreak;
  478.                         $encoded .= $this->_encode_digit(intval($t (($q $t($this->_base - $t))))//v0.4.5 Changed from ceil() to intval()
  479.                         $q = (int) (($q $t($this->_base - $t));
  480.                     }
  481.                     $encoded .= $this->_encode_digit($q);
  482.                     $bias $this->_adapt($delta$codecount+1$is_first);
  483.                     $codecount++;
  484.                     $delta 0;
  485.                     $is_first false;
  486.                 }
  487.             }
  488.             $delta++;
  489.             $cur_code++;
  490.         }
  491.         return $encoded;
  492.     }
  493.  
  494.     /**
  495.      * Adapt the bias according to the current code point and position
  496.      * @param int $delta 
  497.      * @param int $npoints 
  498.      * @param int $is_first 
  499.      * @return int 
  500.      */
  501.     private function _adapt($delta$npoints$is_first)
  502.     {
  503.         $delta intval($is_first ($delta $this->_damp($delta 2));
  504.         $delta += intval($delta $npoints);
  505.         for ($k 0$delta (($this->_base - $this->_tmin$this->_tmax2$k += $this->_base{
  506.             $delta intval($delta ($this->_base - $this->_tmin));
  507.         }
  508.         return intval($k ($this->_base - $this->_tmin + 1$delta ($delta $this->_skew));
  509.     }
  510.  
  511.     /**
  512.      * Encoding a certain digit
  513.      * @param    int $d 
  514.      * @return string 
  515.      */
  516.     private function _encode_digit($d)
  517.     {
  518.         return chr($d 22 75 ($d 26));
  519.     }
  520.  
  521.     /**
  522.      * Decode a certain digit
  523.      * @param    int $cp 
  524.      * @return int 
  525.      */
  526.     private function _decode_digit($cp)
  527.     {
  528.         $cp ord($cp);
  529.         return ($cp 48 10$cp 22 (($cp 65 26$cp 65 (($cp 97 26$cp 97 $this->_base));
  530.     }
  531.  
  532.     /**
  533.      * Internal error handling method
  534.      * @param  string $error 
  535.      */
  536.     private function _error($error '')
  537.     {
  538.         $this->_error = $error;
  539.     }
  540.  
  541.     /**
  542.      * Do Nameprep according to RFC3491 and RFC3454
  543.      * @param    array    Unicode Characters
  544.      * @return   string   Unicode Characters, Nameprep'd
  545.      */
  546.     private function _nameprep($input)
  547.     {
  548.         $output array();
  549.         $error false;
  550.         //
  551.         // Mapping
  552.         // Walking through the input array, performing the required steps on each of
  553.         // the input chars and putting the result into the output array
  554.         // While mapping required chars we apply the cannonical ordering
  555.         foreach ($input as $v{
  556.             // Map to nothing == skip that code point
  557.             if (in_array($v$this->NP['map_nothing'])) continue;
  558.             // Try to find prohibited input
  559.             if (in_array($v$this->NP['prohibit']|| in_array($v$this->NP['general_prohibited'])) {
  560.                 $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X'$v));
  561.                 return false;
  562.             }
  563.             foreach ($this->NP['prohibit_ranges'as $range{
  564.                 if ($range[0<= $v && $v <= $range[1]{
  565.                     $this->_error('NAMEPREP: Prohibited input U+'.sprintf('%08X'$v));
  566.                     return false;
  567.                 }
  568.             }
  569.             // Hangul syllable decomposition
  570.             if (0xAC00 <= $v && $v <= 0xD7AF{
  571.                 foreach ($this->_hangul_decompose($vas $out$output[= (int) $out;
  572.             // There's a decomposition mapping for that code point
  573.             elseif (isset($this->NP['replacemaps'][$v])) {
  574.                 foreach ($this->_apply_cannonical_ordering($this->NP['replacemaps'][$v]as $out{
  575.                     $output[= (int) $out;
  576.                 }
  577.             else {
  578.                 $output[= (int) $v;
  579.             }
  580.         }
  581.         // Before applying any Combining, try to rearrange any Hangul syllables
  582.         $output $this->_hangul_compose($output);
  583.         //
  584.         // Combine code points
  585.         //
  586.         $last_class 0;
  587.         $last_starter 0;
  588.         $out_len count($output);
  589.         for ($i 0$i $out_len++$i{
  590.             $class $this->_get_combining_class($output[$i]);
  591.             if ((!$last_class || $last_class $class&& $class{
  592.                 // Try to match
  593.                 $seq_len $i $last_starter;
  594.                 $out $this->_combine(array_slice($output$last_starter$seq_len));
  595.                 // On match: Replace the last starter with the composed character and remove
  596.                 // the now redundant non-starter(s)
  597.                 if ($out{
  598.                     $output[$last_starter$out;
  599.                     if (count($out!= $seq_len{
  600.                         for ($j $i+1$j $out_len++$j$output[$j-1$output[$j];
  601.                         unset($output[$out_len]);
  602.                     }
  603.                     // Rewind the for loop by one, since there can be more possible compositions
  604.                     $i--;
  605.                     $out_len--;
  606.                     $last_class ($i == $last_starter$this->_get_combining_class($output[$i-1]);
  607.                     continue;
  608.                 }
  609.             }
  610.             // The current class is 0
  611.             if (!$class$last_starter $i;
  612.             $last_class $class;
  613.         }
  614.         return $output;
  615.     }
  616.  
  617.     /**
  618.      * Decomposes a Hangul syllable
  619.      * (see http://www.unicode.org/unicode/reports/tr15/#Hangul
  620.      * @param    integer  32bit UCS4 code point
  621.      * @return   array    Either Hangul Syllable decomposed or original 32bit value as one value array
  622.      */
  623.     private function _hangul_decompose($char)
  624.     {
  625.         $sindex = (int) $char $this->_sbase;
  626.         if ($sindex || $sindex >= $this->_scountreturn array($char);
  627.         $result array();
  628.         $result[= (int) $this->_lbase + $sindex $this->_ncount;
  629.         $result[= (int) $this->_vbase + ($sindex $this->_ncount$this->_tcount;
  630.         $T intval($this->_tbase + $sindex $this->_tcount);
  631.         if ($T != $this->_tbase$result[$T;
  632.         return $result;
  633.     }
  634.     /**
  635.      * Ccomposes a Hangul syllable
  636.      * (see http://www.unicode.org/unicode/reports/tr15/#Hangul
  637.      * @param    array    Decomposed UCS4 sequence
  638.      * @return   array    UCS4 sequence with syllables composed
  639.      */
  640.     private function _hangul_compose($input)
  641.     {
  642.         $inp_len count($input);
  643.         if (!$inp_lenreturn array();
  644.         $result array();
  645.         $last = (int) $input[0];
  646.         $result[$last// copy first char from input to output
  647.  
  648.         for ($i 1$i $inp_len++$i{
  649.             $char = (int) $input[$i];
  650.             $sindex $last $this->_sbase;
  651.             $lindex $last $this->_lbase;
  652.             $vindex $char $this->_vbase;
  653.             $tindex $char $this->_tbase;
  654.             // Find out, whether two current characters are LV and T
  655.             if (<= $sindex && $sindex $this->_scount && ($sindex $this->_tcount == 0)
  656.                     && <= $tindex && $tindex <= $this->_tcount{
  657.                 // create syllable of form LVT
  658.                 $last += $tindex;
  659.                 $result[(count($result1)$last// reset last
  660.                 continue// discard char
  661.             }
  662.             // Find out, whether two current characters form L and V
  663.             if (<= $lindex && $lindex $this->_lcount && <= $vindex && $vindex $this->_vcount{
  664.                 // create syllable of form LV
  665.                 $last = (int) $this->_sbase + ($lindex $this->_vcount + $vindex$this->_tcount;
  666.                 $result[(count($result1)$last// reset last
  667.                 continue// discard char
  668.             }
  669.             // if neither case was true, just add the character
  670.             $last $char;
  671.             $result[$char;
  672.         }
  673.         return $result;
  674.     }
  675.  
  676.     /**
  677.      * Returns the combining class of a certain wide char
  678.      * @param    integer    Wide char to check (32bit integer)
  679.      * @return   integer    Combining class if found, else 0
  680.      */
  681.     private function _get_combining_class($char)
  682.     {
  683.         return isset($this->NP['norm_combcls'][$char]$this->NP['norm_combcls'][$char0;
  684.     }
  685.  
  686.     /**
  687.      * Apllies the cannonical ordering of a decomposed UCS4 sequence
  688.      * @param    array      Decomposed UCS4 sequence
  689.      * @return   array      Ordered USC4 sequence
  690.      */
  691.     private function _apply_cannonical_ordering($input)
  692.     {
  693.         $swap true;
  694.         $size count($input);
  695.         while ($swap{
  696.             $swap false;
  697.             $last $this->_get_combining_class(intval($input[0]));
  698.             for ($i 0$i $size-1++$i{
  699.                 $next $this->_get_combining_class(intval($input[$i+1]));
  700.                 if ($next != && $last $next{
  701.                     // Move item leftward until it fits
  702.                     for ($j $i 1$j 0--$j{
  703.                         if ($this->_get_combining_class(intval($input[$j-1])) <= $nextbreak;
  704.                         $t intval($input[$j]);
  705.                         $input[$jintval($input[$j-1]);
  706.                         $input[$j-1$t;
  707.                         $swap true;
  708.                     }
  709.                     // Reentering the loop looking at the old character again
  710.                     $next $last;
  711.                 }
  712.                 $last $next;
  713.             }
  714.         }
  715.         return $input;
  716.     }
  717.  
  718.     /**
  719.      * Do composition of a sequence of starter and non-starter
  720.      * @param    array      UCS4 Decomposed sequence
  721.      * @return   array      Ordered USC4 sequence
  722.      */
  723.     private function _combine($input)
  724.     {
  725.         $inp_len count($input);
  726.         foreach ($this->NP['replacemaps'as $np_src => $np_target{
  727.             if ($np_target[0!= $input[0]continue;
  728.             if (count($np_target!= $inp_lencontinue;
  729.             $hit false;
  730.             foreach ($input as $k2 => $v2{
  731.                 if ($v2 == $np_target[$k2]{
  732.                     $hit true;
  733.                 else {
  734.                     $hit false;
  735.                     break;
  736.                 }
  737.             }
  738.             if ($hitreturn $np_src;
  739.         }
  740.         return false;
  741.     }
  742.  
  743.     /**
  744.      * This converts an UTF-8 encoded string to its UCS-4 representation
  745.      * By talking about UCS-4 "strings" we mean arrays of 32bit integers representing
  746.      * each of the "chars". This is due to PHP not being able to handle strings with
  747.      * bit depth different from 8. This apllies to the reverse method _ucs4_to_utf8(), too.
  748.      * The following UTF-8 encodings are supported:
  749.      * bytes bits  representation
  750.      * 1        7  0xxxxxxx
  751.      * 2       11  110xxxxx 10xxxxxx
  752.      * 3       16  1110xxxx 10xxxxxx 10xxxxxx
  753.      * 4       21  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
  754.      * 5       26  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  755.      * 6       31  1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  756.      * Each x represents a bit that can be used to store character data.
  757.      * The five and six byte sequences are part of Annex D of ISO/IEC 10646-1:2000
  758.      * @param string $input 
  759.      * @return string 
  760.      */
  761.     private function _utf8_to_ucs4($input)
  762.     {
  763.         $output array();
  764.         $out_len 0;
  765.         // Patch by Daniel Hahler; work around prolbem with mbstring.func_overload
  766.         if (function_exists('mb_strlen')) {
  767.             $inp_len mb_strlen($input'8bit');
  768.         else {
  769.             $inp_len strlen($input);
  770.         }
  771.         $mode 'next';
  772.         $test 'none';
  773.         for ($k 0$k $inp_len++$k{
  774.             $v ord($input{$k})// Extract byte from input string
  775.             if ($v 128// We found an ASCII char - put into stirng as is
  776.                 $output[$out_len$v;
  777.                 ++$out_len;
  778.                 if ('add' == $mode{
  779.                     $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
  780.                     return false;
  781.                 }
  782.                 continue;
  783.             }
  784.             if ('next' == $mode// Try to find the next start byte; determine the width of the Unicode char
  785.                 $start_byte $v;
  786.                 $mode 'add';
  787.                 $test 'range';
  788.                 if ($v >> == 6// &110xxxxx 10xxxxx
  789.                     $next_byte 0// Tells, how many times subsequent bitmasks must rotate 6bits to the left
  790.                     $v ($v 192<< 6;
  791.                 elseif ($v >> == 14// &1110xxxx 10xxxxxx 10xxxxxx
  792.                     $next_byte 1;
  793.                     $v ($v 224<< 12;
  794.                 elseif ($v >> == 30// &11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
  795.                     $next_byte 2;
  796.                     $v ($v 240<< 18;
  797.                 elseif ($v >> == 62// &111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  798.                     $next_byte 3;
  799.                     $v ($v 248<< 24;
  800.                 elseif ($v >> == 126// &1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
  801.                     $next_byte 4;
  802.                     $v ($v 252<< 30;
  803.                 else {
  804.                     $this->_error('This might be UTF-8, but I don\'t understand it at byte '.$k);
  805.                     return false;
  806.                 }
  807.                 if ('add' == $mode{
  808.                     $output[$out_len= (int) $v;
  809.                     ++$out_len;
  810.                     continue;
  811.                 }
  812.             }
  813.             if ('add' == $mode{
  814.                 if (!$this->_allow_overlong && $test == 'range'{
  815.                     $test 'none';
  816.                     if (($v 0xA0 && $start_byte == 0xE0|| ($v 0x90 && $start_byte == 0xF0|| ($v 0x8F && $start_byte == 0xF4)) {
  817.                         $this->_error('Bogus UTF-8 character detected (out of legal range) at byte '.$k);
  818.                         return false;
  819.                     }
  820.                 }
  821.                 if ($v >> == 2// Bit mask must be 10xxxxxx
  822.                     $v ($v 128<< ($next_byte 6);
  823.                     $output[($out_len 1)+= $v;
  824.                     --$next_byte;
  825.                 else {
  826.                     $this->_error('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
  827.                     return false;
  828.                 }
  829.                 if ($next_byte 0{
  830.                     $mode 'next';
  831.                 }
  832.             }
  833.         // for
  834.         return $output;
  835.     }
  836.  
  837.     /**
  838.      * Convert UCS-4 string into UTF-8 string
  839.      * See _utf8_to_ucs4() for details
  840.      * @param string  $input 
  841.      * @return string 
  842.      */
  843.     private function _ucs4_to_utf8($input)
  844.     {
  845.         $output '';
  846.         foreach ($input as $k => $v{
  847.             if ($v 128// 7bit are transferred literally
  848.                 $output .= chr($v);
  849.             elseif ($v (<< 11)) // 2 bytes
  850.                 $output .= chr(192+($v >> 6)).chr(128+($v 63));
  851.             elseif ($v (<< 16)) // 3 bytes
  852.                 $output .= chr(224+($v >> 12)).chr(128+(($v >> 663)).chr(128+($v 63));
  853.             elseif ($v (<< 21)) // 4 bytes
  854.                 $output .= chr(240+($v >> 18)).chr(128+(($v >> 1263)).chr(128+(($v >> 663)).chr(128+($v 63));
  855.             elseif (self::$safe_mode{
  856.                 $output .= self::$safe_char;
  857.             else {
  858.                 $this->_error('Conversion from UCS-4 to UTF-8 failed: malformed input at byte '.$k);
  859.                 return false;
  860.             }
  861.         }
  862.         return $output;
  863.     }
  864.  
  865.     /**
  866.       * Convert UCS-4 array into UCS-4 string
  867.       *
  868.       * @param array $input 
  869.       * @return string 
  870.       */
  871.     private function _ucs4_to_ucs4_string($input)
  872.     {
  873.         $output '';
  874.         // Take array values and split output to 4 bytes per value
  875.         // The bit mask is 255, which reads &11111111
  876.         foreach ($input as $v{
  877.             $output .= chr(($v >> 24255).chr(($v >> 16255).chr(($v >> 8255).chr($v 255);
  878.         }
  879.         return $output;
  880.     }
  881.  
  882.     /**
  883.       * Convert UCS-4 strin into UCS-4 garray
  884.       *
  885.       * @param  string $input 
  886.       * @return array 
  887.       */
  888.     private function _ucs4_string_to_ucs4($input)
  889.     {
  890.         $output array();
  891.         $inp_len strlen($input);
  892.         // Input length must be dividable by 4
  893.         if ($inp_len 4{
  894.             $this->_error('Input UCS4 string is broken');
  895.             return false;
  896.         }
  897.         // Empty input - return empty output
  898.         if (!$inp_lenreturn $output;
  899.         for ($i 0$out_len = -1$i $inp_len++$i{
  900.             // Increment output position every 4 input bytes
  901.             if (!($i 4)) {
  902.                 $out_len++;
  903.                 $output[$out_len0;
  904.             }
  905.             $output[$out_len+= ord($input{$i}<< ((($i 4) ) );
  906.         }
  907.         return $output;
  908.     }
  909.  
  910.     /**
  911.      * Holds all relevant mapping tables, loaded from a seperate file on construct
  912.      * See RFC3454 for details
  913.      *
  914.      * @private array
  915.      * @since 0.5.2
  916.      *
  917.      */
  918.     private $NP array
  919.             ('map_nothing' => array
  920.                     (0xAD0x34F0x18060x180B0x180C0x180D0x200B
  921.                     ,0x200C0x200D0x20600xFE000xFE010xFE020xFE03
  922.                     ,0xFE040xFE050xFE060xFE070xFE080xFE090xFE0A
  923.                     ,0xFE0B0xFE0C0xFE0D0xFE0E0xFE0F0xFEFF
  924.                     )
  925.             ,'general_prohibited' => array
  926.                     (01234567890xA0xB0xC0xD0xE
  927.                     ,0xF0x100x110x120x130x140x150x160x17
  928.                     ,0x180x190x1A0x1B0x1C0x1D0x1E0x1F0x20
  929.                     ,0x210x220x230x240x250x260x270x280x29
  930.                     ,0x2A0x2B0x2C0x2F0x3B0x3C0x3D0x3E0x3F
  931.                     ,0x400x5B0x5C0x5D0x5E0x5F0x600x7B0x7C
  932.                     ,0x7D0x7E0x7F0x3002
  933.                     )
  934.             ,'prohibit' => array
  935.                     (0xA00x3400x3410x6DD0x70F0x16800x180E0x2000
  936.                     ,0x20010x20020x20030x20040x20050x20060x2007
  937.                     ,0x20080x20090x200A0x200B0x200C0x200D0x200E
  938.                     ,0x200F0x20280x20290x202A0x202B0x202C0x202D
  939.                     ,0x202E0x202F0x205F0x206A0x206B0x206C0x206D
  940.                     ,0x206E0x206F0x30000xFEFF0xFFF90xFFFA0xFFFB
  941.                     ,0xFFFC0xFFFD0xFFFE0xFFFF0x1FFFE0x1FFFF0x2FFFE
  942.                     ,0x2FFFF0x3FFFE0x3FFFF0x4FFFE0x4FFFF0x5FFFE
  943.                     ,0x5FFFF0x6FFFE0x6FFFF0x7FFFE0x7FFFF0x8FFFE
  944.                     ,0x8FFFF0x9FFFE0x9FFFF0xAFFFE0xAFFFF0xBFFFE
  945.                     ,0xBFFFF0xCFFFE0xCFFFF0xDFFFE0xDFFFF0xE0001
  946.                     ,0xEFFFE0xEFFFF0xFFFFE0xFFFFF0x10FFFE0x10FFFF
  947.                     )
  948.             ,'prohibit_ranges' => array
  949.                     (array(0x800x9F)array(0x20600x206F)
  950.                     ,array(0x1D1730x1D17A)array(0xE0000xF8FF)
  951.                     ,array(0xF00000xFFFFD)array(0x1000000x10FFFD)
  952.                     ,array(0xFDD00xFDEF)array(0xD8000xDFFF)
  953.                     ,array(0x2FF00x2FFB)array(0xE00200xE007F)
  954.                     )
  955.             ,'replacemaps' => array
  956.                     (0x41 => array(0x61)
  957.                     ,0x42 => array(0x62)
  958.                     ,0x43 => array(0x63)
  959.                     ,0x44 => array(0x64)
  960.                     ,0x45 => array(0x65)
  961.                     ,0x46 => array(0x66)
  962.                     ,0x47 => array(0x67)
  963.                     ,0x48 => array(0x68)
  964.                     ,0x49 => array(0x69)
  965.                     ,0x4A => array(0x6A)
  966.                     ,0x4B => array(0x6B)
  967.                     ,0x4C => array(0x6C)
  968.                     ,0x4D => array(0x6D)
  969.                     ,0x4E => array(0x6E)
  970.                     ,0x4F => array(0x6F)
  971.                     ,0x50 => array(0x70)
  972.                     ,0x51 => array(0x71)
  973.                     ,0x52 => array(0x72)
  974.                     ,0x53 => array(0x73)
  975.                     ,0x54 => array(0x74)
  976.                     ,0x55 => array(0x75)
  977.                     ,0x56 => array(0x76)
  978.                     ,0x57 => array(0x77)
  979.                     ,0x58 => array(0x78)
  980.                     ,0x59 => array(0x79)
  981.                     ,0x5A => array(0x7A)
  982.                     ,0xB5 => array(0x3BC)
  983.                     ,0xC0 => array(0xE0)
  984.                     ,0xC1 => array(0xE1)
  985.                     ,0xC2 => array(0xE2)
  986.                     ,0xC3 => array(0xE3)
  987.                     ,0xC4 => array(0xE4)
  988.                     ,0xC5 => array(0xE5)
  989.                     ,0xC6 => array(0xE6)
  990.                     ,0xC7 => array(0xE7)
  991.                     ,0xC8 => array(0xE8)
  992.                     ,0xC9 => array(0xE9)
  993.                     ,0xCA => array(0xEA)
  994.                     ,0xCB => array(0xEB)
  995.                     ,0xCC => array(0xEC)
  996.                     ,0xCD => array(0xED)
  997.                     ,0xCE => array(0xEE)
  998.                     ,0xCF => array(0xEF)
  999.                     ,0xD0 => array(0xF0)
  1000.                     ,0xD1 => array(0xF1)
  1001.                     ,0xD2 => array(0xF2)
  1002.                     ,0xD3 => array(0xF3)
  1003.                     ,0xD4 => array(0xF4)
  1004.                     ,0xD5 => array(0xF5)
  1005.                     ,0xD6 => array(0xF6)
  1006.                     ,0xD8 => array(0xF8)
  1007.                     ,0xD9 => array(0xF9)
  1008.                     ,0xDA => array(0xFA)
  1009.                     ,0xDB => array(0xFB)
  1010.                     ,0xDC => array(0xFC)
  1011.                     ,0xDD => array(0xFD)
  1012.                     ,0xDE => array(0xFE)
  1013.                     ,0xDF => array(0x730x73)
  1014.                     ,0x100 => array(0x101)
  1015.                     ,0x102 => array(0x103)
  1016.                     ,0x104 => array(0x105)
  1017.                     ,0x106 => array(0x107)
  1018.                     ,0x108 => array(0x109)
  1019.                     ,0x10A => array(0x10B)
  1020.                     ,0x10C => array(0x10D)
  1021.                     ,0x10E => array(0x10F)
  1022.                     ,0x110 => array(0x111)
  1023.                     ,0x112 => array(0x113)
  1024.                     ,0x114 => array(0x115)
  1025.                     ,0x116 => array(0x117)
  1026.                     ,0x118 => array(0x119)
  1027.                     ,0x11A => array(0x11B)
  1028.                     ,0x11C => array(0x11D)
  1029.                     ,0x11E => array(0x11F)
  1030.                     ,0x120 => array(0x121)
  1031.                     ,0x122 => array(0x123)
  1032.                     ,0x124 => array(0x125)
  1033.                     ,0x126 => array(0x127)
  1034.                     ,0x128 => array(0x129)
  1035.                     ,0x12A => array(0x12B)
  1036.                     ,0x12C => array(0x12D)
  1037.                     ,0x12E => array(0x12F)
  1038.                     ,0x130 => array(0x690x307)
  1039.                     ,0x132 => array(0x133)
  1040.                     ,0x134 => array(0x135)
  1041.                     ,0x136 => array(0x137)
  1042.                     ,0x139 => array(0x13A)
  1043.                     ,0x13B => array(0x13C)
  1044.                     ,0x13D => array(0x13E)
  1045.                     ,0x13F => array(0x140)
  1046.                     ,0x141 => array(0x142)
  1047.                     ,0x143 => array(0x144)
  1048.                     ,0x145 => array(0x146)
  1049.                     ,0x147 => array(0x148)
  1050.                     ,0x149 => array(0x2BC0x6E)
  1051.                     ,0x14A => array(0x14B)
  1052.                     ,0x14C => array(0x14D)
  1053.                     ,0x14E => array(0x14F)
  1054.                     ,0x150 => array(0x151)
  1055.                     ,0x152 => array(0x153)
  1056.                     ,0x154 => array(0x155)
  1057.                     ,0x156 => array(0x157)
  1058.                     ,0x158 => array(0x159)
  1059.                     ,0x15A => array(0x15B)
  1060.                     ,0x15C => array(0x15D)
  1061.                     ,0x15E => array(0x15F)
  1062.                     ,0x160 => array(0x161)
  1063.                     ,0x162 => array(0x163)
  1064.                     ,0x164 => array(0x165)
  1065.                     ,0x166 => array(0x167)
  1066.                     ,0x168 => array(0x169)
  1067.                     ,0x16A => array(0x16B)
  1068.                     ,0x16C => array(0x16D)
  1069.                     ,0x16E => array(0x16F)
  1070.                     ,0x170 => array(0x171)
  1071.                     ,0x172 => array(0x173)
  1072.                     ,0x174 => array(0x175)
  1073.                     ,0x176 => array(0x177)
  1074.                     ,0x178 => array(0xFF)
  1075.                     ,0x179 => array(0x17A)
  1076.                     ,0x17B => array(0x17C)
  1077.                     ,0x17D => array(0x17E)
  1078.                     ,0x17F => array(0x73)
  1079.                     ,0x181 => array(0x253)
  1080.                     ,0x182 => array(0x183)
  1081.                     ,0x184 => array(0x185)
  1082.                     ,0x186 => array(0x254)
  1083.                     ,0x187 => array(0x188)
  1084.                     ,0x189 => array(0x256)
  1085.                     ,0x18A => array(0x257)
  1086.                     ,0x18B => array(0x18C)
  1087.                     ,0x18E => array(0x1DD)
  1088.                     ,0x18F => array(0x259)
  1089.                     ,0x190 => array(0x25B)
  1090.                     ,0x191 => array(0x192)
  1091.                     ,0x193 => array(0x260)
  1092.                     ,0x194 => array(0x263)
  1093.                     ,0x196 => array(0x269)
  1094.                     ,0x197 => array(0x268)
  1095.                     ,0x198 => array(0x199)
  1096.                     ,0x19C => array(0x26F)
  1097.                     ,0x19D => array(0x272)
  1098.                     ,0x19F => array(0x275)
  1099.                     ,0x1A0 => array(0x1A1)
  1100.                     ,0x1A2 => array(0x1A3)
  1101.                     ,0x1A4 => array(0x1A5)
  1102.                     ,0x1A6 => array(0x280)
  1103.                     ,0x1A7 => array(0x1A8)
  1104.                     ,0x1A9 => array(0x283)
  1105.                     ,0x1AC => array(0x1AD)
  1106.                     ,0x1AE => array(0x288)
  1107.                     ,0x1AF => array(0x1B0)
  1108.                     ,0x1B1 => array(0x28A)
  1109.                     ,0x1B2 => array(0x28B)
  1110.                     ,0x1B3 => array(0x1B4)
  1111.                     ,0x1B5 => array(0x1B6)
  1112.                     ,0x1B7 => array(0x292)
  1113.                     ,0x1B8 => array(0x1B9)
  1114.                     ,0x1BC => array(0x1BD)
  1115.                     ,0x1C4 => array(0x1C6)
  1116.                     ,0x1C5 => array(0x1C6)
  1117.                     ,0x1C7 => array(0x1C9)
  1118.                     ,0x1C8 => array(0x1C9)
  1119.                     ,0x1CA => array(0x1CC)
  1120.                     ,0x1CB => array(0x1CC)
  1121.                     ,0x1CD => array(0x1CE)
  1122.                     ,0x1CF => array(0x1D0)
  1123.                     ,0x1D1   => array(0x1D2)
  1124.                     ,0x1D3   => array(0x1D4)
  1125.                     ,0x1D5   => array(0x1D6)
  1126.                     ,0x1D7   => array(0x1D8)
  1127.                     ,0x1D9   => array(0x1DA)
  1128.                     ,0x1DB   => array(0x1DC)
  1129.                     ,0x1DE   => array(0x1DF)
  1130.                     ,0x1E0   => array(0x1E1)
  1131.                     ,0x1E2   => array(0x1E3)
  1132.                     ,0x1E4   => array(0x1E5)
  1133.                     ,0x1E6   => array(0x1E7)
  1134.                     ,0x1E8   => array(0x1E9)
  1135.                     ,0x1EA   => array(0x1EB)
  1136.                     ,0x1EC   => array(0x1ED)
  1137.                     ,0x1EE   => array(0x1EF)
  1138.                     ,0x1F0   => array(0x6A0x30C)
  1139.                     ,0x1F1   => array(0x1F3)
  1140.                     ,0x1F2   => array(0x1F3)
  1141.                     ,0x1F4   => array(0x1F5)
  1142.                     ,0x1F6   => array(0x195)
  1143.                     ,0x1F7   => array(0x1BF)
  1144.                     ,0x1F8   => array(0x1F9)
  1145.                     ,0x1FA   => array(0x1FB)
  1146.                     ,0x1FC   => array(0x1FD)
  1147.                     ,0x1FE   => array(0x1FF)
  1148.                     ,0x200   => array(0x201)
  1149.                     ,0x202   => array(0x203)
  1150.                     ,0x204   => array(0x205)
  1151.                     ,0x206   => array(0x207)
  1152.                     ,0x208   => array(0x209)
  1153.                     ,0x20A   => array(0x20B)
  1154.                     ,0x20C   => array(0x20D)
  1155.                     ,0x20E   => array(0x20F)
  1156.                     ,0x210   => array(0x211)
  1157.                     ,0x212   => array(0x213)
  1158.                     ,0x214   => array(0x215)
  1159.                     ,0x216   => array(0x217)
  1160.                     ,0x218   => array(0x219)
  1161.                     ,0x21A   => array(0x21B)
  1162.                     ,0x21C   => array(0x21D)
  1163.                     ,0x21E   => array(0x21F)
  1164.                     ,0x220   => array(0x19E)
  1165.                     ,0x222   => array(0x223)
  1166.                     ,0x224   => array(0x225)
  1167.                     ,0x226   => array(0x227)
  1168.                     ,0x228   => array(0x229)
  1169.                     ,0x22A   => array(0x22B)
  1170.                     ,0x22C   => array(0x22D)
  1171.                     ,0x22E   => array(0x22F)
  1172.                     ,0x230   => array(0x231)
  1173.                     ,0x232   => array(0x233)
  1174.                     ,0x345   => array(0x3B9)
  1175.                     ,0x37A   => array(0x200x3B9)
  1176.                     ,0x386   => array(0x3AC)
  1177.                     ,0x388   => array(0x3AD)
  1178.                     ,0x389   => array(0x3AE)
  1179.                     ,0x38A   => array(0x3AF)
  1180.                     ,0x38C   => array(0x3CC)
  1181.                     ,0x38E   => array(0x3CD)
  1182.                     ,0x38F   => array(0x3CE)
  1183.                     ,0x390   => array(0x3B90x3080x301)
  1184.                     ,0x391   => array(0x3B1)
  1185.                     ,0x392   => array(0x3B2)
  1186.                     ,0x393   => array(0x3B3)
  1187.                     ,0x394   => array(0x3B4)
  1188.                     ,0x395   => array(0x3B5)
  1189.                     ,0x396   => array(0x3B6)
  1190.                     ,0x397   => array(0x3B7)
  1191.                     ,0x398   => array(0x3B8)
  1192.                     ,0x399   => array(0x3B9)
  1193.                     ,0x39A   => array(0x3BA)
  1194.                     ,0x39B   => array(0x3BB)
  1195.                     ,0x39C   => array(0x3BC)
  1196.                     ,0x39D   => array(0x3BD)
  1197.                     ,0x39E   => array(0x3BE)
  1198.                     ,0x39F   => array(0x3BF)
  1199.                     ,0x3A0   => array(0x3C0)
  1200.                     ,0x3A1   => array(0x3C1)
  1201.                     ,0x3A3   => array(0x3C3)
  1202.                     ,0x3A4   => array(0x3C4)
  1203.                     ,0x3A5   => array(0x3C5)
  1204.                     ,0x3A6   => array(0x3C6)
  1205.                     ,0x3A7   => array(0x3C7)
  1206.                     ,0x3A8   => array(0x3C8)
  1207.                     ,0x3A9   => array(0x3C9)
  1208.                     ,0x3AA   => array(0x3CA)
  1209.                     ,0x3AB   => array(0x3CB)
  1210.                     ,0x3B0   => array(0x3C50x3080x301)
  1211.                     ,0x3C2   => array(0x3C3)
  1212.                     ,0x3D0   => array(0x3B2)
  1213.                     ,0x3D1   => array(0x3B8)
  1214.                     ,0x3D2   => array(0x3C5)
  1215.                     ,0x3D3   => array(0x3CD)
  1216.                     ,0x3D4   => array(0x3CB)
  1217.                     ,0x3D5   => array(0x3C6)
  1218.                     ,0x3D6   => array(0x3C0)
  1219.                     ,0x3D8   => array(0x3D9)
  1220.                     ,0x3DA   => array(0x3DB)
  1221.                     ,0x3DC   => array(0x3DD)
  1222.                     ,0x3DE   => array(0x3DF)
  1223.                     ,0x3E0   => array(0x3E1)
  1224.                     ,0x3E2   => array(0x3E3)
  1225.                     ,0x3E4   => array(0x3E5)
  1226.                     ,0x3E6   => array(0x3E7)
  1227.                     ,0x3E8   => array(0x3E9)
  1228.                     ,0x3EA   => array(0x3EB)
  1229.                     ,0x3EC   => array(0x3ED)
  1230.                     ,0x3EE   => array(0x3EF)
  1231.                     ,0x3F0   => array(0x3BA)
  1232.                     ,0x3F1   => array(0x3C1)
  1233.                     ,0x3F2   => array(0x3C3)
  1234.                     ,0x3F4   => array(0x3B8)
  1235.                     ,0x3F5   => array(0x3B5)
  1236.                     ,0x400   => array(0x450)
  1237.                     ,0x401   => array(0x451)
  1238.                     ,0x402   => array(0x452)
  1239.                     ,0x403   => array(0x453)
  1240.                     ,0x404   => array(0x454)
  1241.                     ,0x405   => array(0x455)
  1242.                     ,0x406   => array(0x456)
  1243.                     ,0x407   => array(0x457)
  1244.                     ,0x408   => array(0x458)
  1245.                     ,0x409   => array(0x459)
  1246.                     ,0x40A   => array(0x45A)
  1247.                     ,0x40B   => array(0x45B)
  1248.                     ,0x40C   => array(0x45C)
  1249.                     ,0x40D   => array(0x45D)
  1250.                     ,0x40E   => array(0x45E)
  1251.                     ,0x40F   => array(0x45F)
  1252.                     ,0x410   => array(0x430)
  1253.                     ,0x411   => array(0x431)
  1254.                     ,0x412   => array(0x432)
  1255.                     ,0x413   => array(0x433)
  1256.                     ,0x414   => array(0x434)
  1257.                     ,0x415   => array(0x435)
  1258.                     ,0x416   => array(0x436)
  1259.                     ,0x417   => array(0x437)
  1260.                     ,0x418   => array(0x438)
  1261.                     ,0x419   => array(0x439)
  1262.                     ,0x41A   => array(0x43A)
  1263.                     ,0x41B   => array(0x43B)
  1264.                     ,0x41C   => array(0x43C)
  1265.                     ,0x41D   => array(0x43D)
  1266.                     ,0x41E   => array(0x43E)
  1267.                     ,0x41F   => array(0x43F)
  1268.                     ,0x420   => array(0x440)
  1269.                     ,0x421   => array(0x441)
  1270.                     ,0x422   => array(0x442)
  1271.                     ,0x423   => array(0x443)
  1272.                     ,0x424   => array(0x444)
  1273.                     ,0x425   => array(0x445)
  1274.                     ,0x426   => array(0x446)
  1275.                     ,0x427   => array(0x447)
  1276.                     ,0x428   => array(0x448)
  1277.                     ,0x429   => array(0x449)
  1278.                     ,0x42A   => array(0x44A)
  1279.                     ,0x42B   => array(0x44B)
  1280.                     ,0x42C   => array(0x44C)
  1281.                     ,0x42D   => array(0x44D)
  1282.                     ,0x42E   => array(0x44E)
  1283.                     ,0x42F   => array(0x44F)
  1284.                     ,0x460   => array(0x461)
  1285.                     ,0x462   => array(0x463)
  1286.                     ,0x464   => array(0x465)
  1287.                     ,0x466   => array(0x467)
  1288.                     ,0x468   => array(0x469)
  1289.                     ,0x46A   => array(0x46B)
  1290.                     ,0x46C   => array(0x46D)
  1291.                     ,0x46E   => array(0x46F)
  1292.                     ,0x470   => array(0x471)
  1293.                     ,0x472   => array(0x473)
  1294.                     ,0x474   => array(0x475)
  1295.                     ,0x476   => array(0x477)
  1296.                     ,0x478   => array(0x479)
  1297.                     ,0x47A   => array(0x47B)
  1298.                     ,0x47C   => array(0x47D)
  1299.                     ,0x47E   => array(0x47F)
  1300.                     ,0x480   => array(0x481)
  1301.                     ,0x48A   => array(0x48B)
  1302.                     ,0x48C   => array(0x48D)
  1303.                     ,0x48E   => array(0x48F)
  1304.                     ,0x490   => array(0x491)
  1305.                     ,0x492   => array(0x493)
  1306.                     ,0x494   => array(0x495)
  1307.                     ,0x496   => array(0x497)
  1308.                     ,0x498   => array(0x499)
  1309.                     ,0x49A   => array(0x49B)
  1310.                     ,0x49C   => array(0x49D)
  1311.                     ,0x49E   => array(0x49F)
  1312.                     ,0x4A0   => array(0x4A1)
  1313.                     ,0x4A2   => array(0x4A3)
  1314.                     ,0x4A4   => array(0x4A5)
  1315.                     ,0x4A6   => array(0x4A7)
  1316.                     ,0x4A8   => array(0x4A9)
  1317.                     ,0x4AA   => array(0x4AB)
  1318.                     ,0x4AC   => array(0x4AD)
  1319.                     ,0x4AE   => array(0x4AF)
  1320.                     ,0x4B0   => array(0x4B1)
  1321.                     ,0x4B2   => array(0x4B3)
  1322.                     ,0x4B4   => array(0x4B5)
  1323.                     ,0x4B6   => array(0x4B7)
  1324.                     ,0x4B8   => array(0x4B9)
  1325.                     ,0x4BA   => array(0x4BB)
  1326.                     ,0x4BC   => array(0x4BD)
  1327.                     ,0x4BE   => array(0x4BF)
  1328.                     ,0x4C1   => array(0x4C2)
  1329.                     ,0x4C3   => array(0x4C4)
  1330.                     ,0x4C5   => array(0x4C6)
  1331.                     ,0x4C7   => array(0x4C8)
  1332.                     ,0x4C9   => array(0x4CA)
  1333.                     ,0x4CB   => array(0x4CC)
  1334.                     ,0x4CD   => array(0x4CE)
  1335.                     ,0x4D0   => array(0x4D1)
  1336.                     ,0x4D2   => array(0x4D3)
  1337.                     ,0x4D4   => array(0x4D5)
  1338.                     ,0x4D6   => array(0x4D7)
  1339.                     ,0x4D8   => array(0x4D9)
  1340.                     ,0x4DA   => array(0x4DB)
  1341.                     ,0x4DC   => array(0x4DD)
  1342.                     ,0x4DE   => array(0x4DF)
  1343.                     ,0x4E0   => array(0x4E1)
  1344.                     ,0x4E2   => array(0x4E3)
  1345.                     ,0x4E4   => array(0x4E5)
  1346.                     ,0x4E6   => array(0x4E7)
  1347.                     ,0x4E8   => array(0x4E9)
  1348.                     ,0x4EA   => array(0x4EB)
  1349.                     ,0x4EC   => array(0x4ED)
  1350.                     ,0x4EE   => array(0x4EF)
  1351.                     ,0x4F0   => array(0x4F1)
  1352.                     ,0x4F2   => array(0x4F3)
  1353.                     ,0x4F4   => array(0x4F5)
  1354.                     ,0x4F8   => array(0x4F9)
  1355.                     ,0x500   => array(0x501)
  1356.                     ,0x502   => array(0x503)
  1357.                     ,0x504   => array(0x505)
  1358.                     ,0x506   => array(0x507)
  1359.                     ,0x508   => array(0x509)
  1360.                     ,0x50A   => array(0x50B)
  1361.                     ,0x50C   => array(0x50D)
  1362.                     ,0x50E   => array(0x50F)
  1363.                     ,0x531   => array(0x561)
  1364.                     ,0x532   => array(0x562)
  1365.                     ,0x533   => array(0x563)
  1366.                     ,0x534   => array(0x564)
  1367.                     ,0x535   => array(0x565)
  1368.                     ,0x536   => array(0x566)
  1369.                     ,0x537   => array(0x567)
  1370.                     ,0x538   => array(0x568)
  1371.                     ,0x539   => array(0x569)
  1372.                     ,0x53A   => array(0x56A)
  1373.                     ,0x53B   => array(0x56B)
  1374.                     ,0x53C   => array(0x56C)
  1375.                     ,0x53D   => array(0x56D)
  1376.                     ,0x53E   => array(0x56E)
  1377.                     ,0x53F   => array(0x56F)
  1378.                     ,0x540   => array(0x570)
  1379.                     ,0x541   => array(0x571)
  1380.                     ,0x542   => array(0x572)
  1381.                     ,0x543   => array(0x573)
  1382.                     ,0x544   => array(0x574)
  1383.                     ,0x545   => array(0x575)
  1384.                     ,0x546   => array(0x576)
  1385.                     ,0x547   => array(0x577)
  1386.                     ,0x548   => array(0x578)
  1387.                     ,0x549   => array(0x579)
  1388.                     ,0x54A   => array(0x57A)
  1389.                     ,0x54B   => array(0x57B)
  1390.                     ,0x54C   => array(0x57C)
  1391.                     ,0x54D   => array(0x57D)
  1392.                     ,0x54E   => array(0x57E)
  1393.                     ,0x54F   => array(0x57F)
  1394.                     ,0x550   => array(0x580)
  1395.                     ,0x551   => array(0x581)
  1396.                     ,0x552   => array(0x582)
  1397.                     ,0x553   => array(0x583)
  1398.                     ,0x554   => array(0x584)
  1399.                     ,0x555   => array(0x585)
  1400.                     ,0x556   => array(0x586)
  1401.                     ,0x587   => array(0x5650x582)
  1402.                     ,0x1E00  => array(0x1E01)
  1403.                     ,0x1E02  => array(0x1E03)
  1404.                     ,0x1E04  => array(0x1E05)
  1405.                     ,0x1E06  => array(0x1E07)
  1406.                     ,0x1E08  => array(0x1E09)
  1407.                     ,0x1E0A  => array(0x1E0B)
  1408.                     ,0x1E0C  => array(0x1E0D)
  1409.                     ,0x1E0E  => array(0x1E0F)
  1410.                     ,0x1E10  => array(0x1E11)
  1411.                     ,0x1E12  => array(0x1E13)
  1412.                     ,0x1E14  => array(0x1E15)
  1413.                     ,0x1E16  => array(0x1E17)
  1414.                     ,0x1E18  => array(0x1E19)
  1415.                     ,0x1E1A  => array(0x1E1B)
  1416.                     ,0x1E1C  => array(0x1E1D)
  1417.                     ,0x1E1E  => array(0x1E1F)
  1418.                     ,0x1E20  => array(0x1E21)
  1419.                     ,0x1E22  => array(0x1E23)
  1420.                     ,0x1E24  => array(0x1E25)
  1421.                     ,0x1E26  => array(0x1E27)
  1422.                     ,0x1E28  => array(0x1E29)
  1423.                     ,0x1E2A  => array(0x1E2B)
  1424.                     ,0x1E2C  => array(0x1E2D)
  1425.                     ,0x1E2E  => array(0x1E2F)
  1426.                     ,0x1E30  => array(0x1E31)
  1427.                     ,0x1E32  => array(0x1E33)
  1428.                     ,0x1E34  => array(0x1E35)
  1429.                     ,0x1E36  => array(0x1E37)
  1430.                     ,0x1E38  => array(0x1E39)
  1431.                     ,0x1E3A  => array(0x1E3B)
  1432.                     ,0x1E3C  => array(0x1E3D)
  1433.                     ,0x1E3E  => array(0x1E3F)
  1434.                     ,0x1E40  => array(0x1E41)
  1435.                     ,0x1E42  => array(0x1E43)
  1436.                     ,0x1E44  => array(0x1E45)
  1437.                     ,0x1E46  => array(0x1E47)
  1438.                     ,0x1E48  => array(0x1E49)
  1439.                     ,0x1E4A  => array(0x1E4B)
  1440.                     ,0x1E4C  => array(0x1E4D)
  1441.                     ,0x1E4E  => array(0x1E4F)
  1442.                     ,0x1E50  => array(0x1E51)
  1443.                     ,0x1E52  => array(0x1E53)
  1444.                     ,0x1E54  => array(0x1E55)
  1445.                     ,0x1E56  => array(0x1E57)
  1446.                     ,0x1E58  => array(0x1E59)
  1447.                     ,0x1E5A  => array(0x1E5B)
  1448.                     ,0x1E5C  => array(0x1E5D)
  1449.                     ,0x1E5E  => array(0x1E5F)
  1450.                     ,0x1E60  => array(0x1E61)
  1451.                     ,0x1E62  => array(0x1E63)
  1452.                     ,0x1E64  => array(0x1E65)
  1453.                     ,0x1E66  => array(0x1E67)
  1454.                     ,0x1E68  => array(0x1E69)
  1455.                     ,0x1E6A  => array(0x1E6B)
  1456.                     ,0x1E6C  => array(0x1E6D)
  1457.                     ,0x1E6E  => array(0x1E6F)
  1458.                     ,0x1E70  => array(0x1E71)
  1459.                     ,0x1E72  => array(0x1E73)
  1460.                     ,0x1E74  => array(0x1E75)
  1461.                     ,0x1E76  => array(0x1E77)
  1462.                     ,0x1E78  => array(0x1E79)
  1463.                     ,0x1E7A  => array(0x1E7B)
  1464.                     ,0x1E7C  => array(0x1E7D)
  1465.                     ,0x1E7E  => array(0x1E7F)
  1466.                     ,0x1E80  => array(0x1E81)
  1467.                     ,0x1E82  => array(0x1E83)
  1468.                     ,0x1E84  => array(0x1E85)
  1469.                     ,0x1E86  => array(0x1E87)
  1470.                     ,0x1E88  => array(0x1E89)
  1471.                     ,0x1E8A  => array(0x1E8B)
  1472.                     ,0x1E8C  => array(0x1E8D)
  1473.                     ,0x1E8E  => array(0x1E8F)
  1474.                     ,0x1E90  => array(0x1E91)
  1475.                     ,0x1E92  => array(0x1E93)
  1476.                     ,0x1E94  => array(0x1E95)
  1477.                     ,0x1E96  => array(0x680x331)
  1478.                     ,0x1E97  => array(0x740x308)
  1479.                     ,0x1E98  => array(0x770x30A)
  1480.                     ,0x1E99  => array(0x790x30A)
  1481.                     ,0x1E9A  => array(0x610x2BE)
  1482.                     ,0x1E9B  => array(0x1E61)
  1483.                     ,0x1EA0  => array(0x1EA1)
  1484.                     ,0x1EA2  => array(0x1EA3)
  1485.                     ,0x1EA4  => array(0x1EA5)
  1486.                     ,0x1EA6  => array(0x1EA7)
  1487.                     ,0x1EA8  => array(0x1EA9)
  1488.                     ,0x1EAA  => array(0x1EAB)
  1489.                     ,0x1EAC  => array(0x1EAD)
  1490.                     ,0x1EAE  => array(0x1EAF)
  1491.                     ,0x1EB0  => array(0x1EB1)
  1492.                     ,0x1EB2  => array(0x1EB3)
  1493.                     ,0x1EB4  => array(0x1EB5)
  1494.                     ,0x1EB6  => array(0x1EB7)
  1495.                     ,0x1EB8  => array(0x1EB9)
  1496.                     ,0x1EBA  => array(0x1EBB)
  1497.                     ,0x1EBC  => array(0x1EBD)
  1498.                     ,0x1EBE  => array(0x1EBF)
  1499.                     ,0x1EC0  => array(0x1EC1)
  1500.                     ,0x1EC2  => array(0x1EC3)
  1501.                     ,0x1EC4  => array(0x1EC5)
  1502.                     ,0x1EC6  => array(0x1EC7)
  1503.                     ,0x1EC8  => array(0x1EC9)
  1504.                     ,0x1ECA  => array(0x1ECB)
  1505.                     ,0x1ECC  => array(0x1ECD)
  1506.                     ,0x1ECE  => array(0x1ECF)
  1507.                     ,0x1ED0  => array(0x1ED1)
  1508.                     ,0x1ED2  => array(0x1ED3)
  1509.                     ,0x1ED4  => array(0x1ED5)
  1510.                     ,0x1ED6  => array(0x1ED7)
  1511.                     ,0x1ED8  => array(0x1ED9)
  1512.                     ,0x1EDA  => array(0x1EDB)
  1513.                     ,0x1EDC  => array(0x1EDD)
  1514.                     ,0x1EDE  => array(0x1EDF)
  1515.                     ,0x1EE0  => array(0x1EE1)
  1516.                     ,0x1EE2  => array(0x1EE3)
  1517.                     ,0x1EE4  => array(0x1EE5)
  1518.                     ,0x1EE6  => array(0x1EE7)
  1519.                     ,0x1EE8  => array(0x1EE9)
  1520.                     ,0x1EEA  => array(0x1EEB)
  1521.                     ,0x1EEC  => array(0x1EED)
  1522.                     ,0x1EEE  => array(0x1EEF)
  1523.                     ,0x1EF0  => array(0x1EF1)
  1524.                     ,0x1EF2  => array(0x1EF3)
  1525.                     ,0x1EF4  => array(0x1EF5)
  1526.                     ,0x1EF6  => array(0x1EF7)
  1527.                     ,0x1EF8  => array(0x1EF9)
  1528.                     ,0x1F08  => array(0x1F00)
  1529.                     ,0x1F09  => array(0x1F01)
  1530.                     ,0x1F0A  => array(0x1F02)
  1531.                     ,0x1F0B  => array(0x1F03)
  1532.                     ,0x1F0C  => array(0x1F04)
  1533.                     ,0x1F0D  => array(0x1F05)
  1534.                     ,0x1F0E  => array(0x1F06)
  1535.                     ,0x1F0F  => array(0x1F07)
  1536.                     ,0x1F18  => array(0x1F10)
  1537.                     ,0x1F19  => array(0x1F11)
  1538.                     ,0x1F1A  => array(0x1F12)
  1539.                     ,0x1F1B  => array(0x1F13)
  1540.                     ,0x1F1C  => array(0x1F14)
  1541.                     ,0x1F1D  => array(0x1F15)
  1542.                     ,0x1F28  => array(0x1F20)
  1543.                     ,0x1F29  => array(0x1F21)
  1544.                     ,0x1F2A  => array(0x1F22)
  1545.                     ,0x1F2B  => array(0x1F23)
  1546.                     ,0x1F2C  => array(0x1F24)
  1547.                     ,0x1F2D  => array(0x1F25)
  1548.                     ,0x1F2E  => array(0x1F26)
  1549.                     ,0x1F2F  => array(0x1F27)
  1550.                     ,0x1F38  => array(0x1F30)
  1551.                     ,0x1F39  => array(0x1F31)
  1552.                     ,0x1F3A  => array(0x1F32)
  1553.                     ,0x1F3B  => array(0x1F33)
  1554.                     ,0x1F3C  => array(0x1F34)
  1555.                     ,0x1F3D  => array(0x1F35)
  1556.                     ,0x1F3E  => array(0x1F36)
  1557.                     ,0x1F3F  => array(0x1F37)
  1558.                     ,0x1F48  => array(0x1F40)
  1559.                     ,0x1F49  => array(0x1F41)
  1560.                     ,0x1F4A  => array(0x1F42)
  1561.                     ,0x1F4B  => array(0x1F43)
  1562.                     ,0x1F4C  => array(0x1F44)
  1563.                     ,0x1F4D  => array(0x1F45)
  1564.                     ,0x1F50  => array(0x3C50x313)
  1565.                     ,0x1F52  => array(0x3C50x3130x300)
  1566.                     ,0x1F54  => array(0x3C50x3130x301)
  1567.                     ,0x1F56  => array(0x3C50x3130x342)
  1568.                     ,0x1F59  => array(0x1F51)
  1569.                     ,0x1F5B  => array(0x1F53)
  1570.                     ,0x1F5D  => array(0x1F55)
  1571.                     ,0x1F5F  => array(0x1F57)
  1572.                     ,0x1F68  => array(0x1F60)
  1573.                     ,0x1F69  => array(0x1F61)
  1574.                     ,0x1F6A  => array(0x1F62)
  1575.                     ,0x1F6B  => array(0x1F63)
  1576.                     ,0x1F6C  => array(0x1F64)
  1577.                     ,0x1F6D  => array(0x1F65)
  1578.                     ,0x1F6E  => array(0x1F66)
  1579.                     ,0x1F6F  => array(0x1F67)
  1580.                     ,0x1F80  => array(0x1F000x3B9)
  1581.                     ,0x1F81  => array(0x1F010x3B9)
  1582.                     ,0x1F82  => array(0x1F020x3B9)
  1583.                     ,0x1F83  => array(0x1F030x3B9)
  1584.                     ,0x1F84  => array(0x1F040x3B9)
  1585.                     ,0x1F85  => array(0x1F050x3B9)
  1586.                     ,0x1F86  => array(0x1F060x3B9)
  1587.                     ,0x1F87  => array(0x1F070x3B9)
  1588.                     ,0x1F88  => array(0x1F000x3B9)
  1589.                     ,0x1F89  => array(0x1F010x3B9)
  1590.                     ,0x1F8A  => array(0x1F020x3B9)
  1591.                     ,0x1F8B  => array(0x1F030x3B9)
  1592.                     ,0x1F8C  => array(0x1F040x3B9)
  1593.                     ,0x1F8D  => array(0x1F050x3B9)
  1594.                     ,0x1F8E  => array(0x1F060x3B9)
  1595.                     ,0x1F8F  => array(0x1F070x3B9)
  1596.                     ,0x1F90  => array(0x1F200x3B9)
  1597.                     ,0x1F91  => array(0x1F210x3B9)
  1598.                     ,0x1F92  => array(0x1F220x3B9)
  1599.                     ,0x1F93  => array(0x1F230x3B9)
  1600.                     ,0x1F94  => array(0x1F240x3B9)
  1601.                     ,0x1F95  => array(0x1F250x3B9)
  1602.                     ,0x1F96  => array(0x1F260x3B9)
  1603.                     ,0x1F97  => array(0x1F270x3B9)
  1604.                     ,0x1F98  => array(0x1F200x3B9)
  1605.                     ,0x1F99  => array(0x1F210x3B9)
  1606.                     ,0x1F9A  => array(0x1F220x3B9)
  1607.                     ,0x1F9B  => array(0x1F230x3B9)
  1608.                     ,0x1F9C  => array(0x1F240x3B9)
  1609.                     ,0x1F9D  => array(0x1F250x3B9)
  1610.                     ,0x1F9E  => array(0x1F260x3B9)
  1611.                     ,0x1F9F  => array(0x1F270x3B9)
  1612.                     ,0x1FA0  => array(0x1F600x3B9)
  1613.                     ,0x1FA1  => array(0x1F610x3B9)
  1614.                     ,0x1FA2  => array(0x1F620x3B9)
  1615.                     ,0x1FA3  => array(0x1F630x3B9)
  1616.                     ,0x1FA4  => array(0x1F640x3B9)
  1617.                     ,0x1FA5  => array(0x1F650x3B9)
  1618.                     ,0x1FA6  => array(0x1F660x3B9)
  1619.                     ,0x1FA7  => array(0x1F670x3B9)
  1620.                     ,0x1FA8  => array(0x1F600x3B9)
  1621.                     ,0x1FA9  => array(0x1F610x3B9)
  1622.                     ,0x1FAA  => array(0x1F620x3B9)
  1623.                     ,0x1FAB  => array(0x1F630x3B9)
  1624.                     ,0x1FAC  => array(0x1F640x3B9)
  1625.                     ,0x1FAD  => array(0x1F650x3B9)
  1626.                     ,0x1FAE  => array(0x1F660x3B9)
  1627.                     ,0x1FAF  => array(0x1F670x3B9)
  1628.                     ,0x1FB2  => array(0x1F700x3B9)
  1629.                     ,0x1FB3  => array(0x3B10x3B9)
  1630.                     ,0x1FB4  => array(0x3AC0x3B9)
  1631.                     ,0x1FB6  => array(0x3B10x342)
  1632.                     ,0x1FB7  => array(0x3B10x3420x3B9)
  1633.                     ,0x1FB8  => array(0x1FB0)
  1634.                     ,0x1FB9  => array(0x1FB1)
  1635.                     ,0x1FBA  => array(0x1F70)
  1636.                     ,0x1FBB  => array(0x1F71)
  1637.                     ,0x1FBC  => array(0x3B10x3B9)
  1638.                     ,0x1FBE  => array(0x3B9)
  1639.                     ,0x1FC2  => array(0x1F740x3B9)
  1640.                     ,0x1FC3  => array(0x3B70x3B9)
  1641.                     ,0x1FC4  => array(0x3AE0x3B9)
  1642.                     ,0x1FC6  => array(0x3B70x342)
  1643.                     ,0x1FC7  => array(0x3B70x3420x3B9)
  1644.                     ,0x1FC8  => array(0x1F72)
  1645.                     ,0x1FC9  => array(0x1F73)
  1646.                     ,0x1FCA  => array(0x1F74)
  1647.                     ,0x1FCB  => array(0x1F75)
  1648.                     ,0x1FCC  => array(0x3B70x3B9)
  1649.                     ,0x1FD2  => array(0x3B90x3080x300)
  1650.                     ,0x1FD3  => array(0x3B90x3080x301)
  1651.                     ,0x1FD6  => array(0x3B90x342)
  1652.                     ,0x1FD7  => array(0x3B90x3080x342)
  1653.                     ,0x1FD8  => array(0x1FD0)
  1654.                     ,0x1FD9  => array(0x1FD1)
  1655.                     ,0x1FDA  => array(0x1F76)
  1656.                     ,0x1FDB  => array(0x1F77)
  1657.                     ,0x1FE2  => array(0x3C50x3080x300)
  1658.                     ,0x1FE3  => array(0x3C50x3080x301)
  1659.                     ,0x1FE4  => array(0x3C10x313)
  1660.                     ,0x1FE6  => array(0x3C50x342)
  1661.                     ,0x1FE7  => array(0x3C50x3080x342)
  1662.                     ,0x1FE8  => array(0x1FE0)
  1663.                     ,0x1FE9  => array(0x1FE1)
  1664.                     ,0x1FEA  => array(0x1F7A)
  1665.                     ,0x1FEB  => array(0x1F7B)
  1666.                     ,0x1FEC  => array(0x1FE5)
  1667.                     ,0x1FF2  => array(0x1F7C0x3B9)
  1668.                     ,0x1FF3  => array(0x3C90x3B9)
  1669.                     ,0x1FF4  => array(0x3CE0x3B9)
  1670.                     ,0x1FF6  => array(0x3C90x342)
  1671.                     ,0x1FF7  => array(0x3C90x3420x3B9)
  1672.                     ,0x1FF8  => array(0x1F78)
  1673.                     ,0x1FF9  => array(0x1F79)
  1674.                     ,0x1FFA  => array(0x1F7C)
  1675.                     ,0x1FFB  => array(0x1F7D)
  1676.                     ,0x1FFC  => array(0x3C90x3B9)
  1677.                     ,0x20A8  => array(0x720x73)
  1678.                     ,0x2102  => array(0x63)
  1679.                     ,0x2103  => array(0xB00x63)
  1680.                     ,0x2107  => array(0x25B)
  1681.                     ,0x2109  => array(0xB00x66)
  1682.                     ,0x210B  => array(0x68)
  1683.                     ,0x210C  => array(0x68)
  1684.                     ,0x210D  => array(0x68)
  1685.                     ,0x2110  => array(0x69)
  1686.                     ,0x2111  => array(0x69)
  1687.                     ,0x2112  => array(0x6C)
  1688.                     ,0x2115  => array(0x6E)
  1689.                     ,0x2116  => array(0x6E0x6F)
  1690.                     ,0x2119  => array(0x70)
  1691.                     ,0x211A  => array(0x71)
  1692.                     ,0x211B  => array(0x72)
  1693.                     ,0x211C  => array(0x72)
  1694.                     ,0x211D  => array(0x72)
  1695.                     ,0x2120  => array(0x730x6D)
  1696.                     ,0x2121  => array(0x740x650x6C)
  1697.                     ,0x2122  => array(0x740x6D)
  1698.                     ,0x2124  => array(0x7A)
  1699.                     ,0x2126  => array(0x3C9)
  1700.                     ,0x2128  => array(0x7A)
  1701.                     ,0x212A  => array(0x6B)
  1702.                     ,0x212B  => array(0xE5)
  1703.                     ,0x212C  => array(0x62)
  1704.                     ,0x212D  => array(0x63)
  1705.                     ,0x2130  => array(0x65)
  1706.                     ,0x2131  => array(0x66)
  1707.                     ,0x2133  => array(0x6D)
  1708.                     ,0x213E  => array(0x3B3)
  1709.                     ,0x213F  => array(0x3C0)
  1710.                     ,0x2145  => array(0x64)
  1711.                     ,0x2160  => array(0x2170)
  1712.                     ,0x2161  => array(0x2171)
  1713.                     ,0x2162  => array(0x2172)
  1714.                     ,0x2163  => array(0x2173)
  1715.                     ,0x2164  => array(0x2174)
  1716.                     ,0x2165  => array(0x2175)
  1717.                     ,0x2166  => array(0x2176)
  1718.                     ,0x2167  => array(0x2177)
  1719.                     ,0x2168  => array(0x2178)
  1720.                     ,0x2169  => array(0x2179)
  1721.                     ,0x216A  => array(0x217A)
  1722.                     ,0x216B  => array(0x217B)
  1723.                     ,0x216C  => array(0x217C)
  1724.                     ,0x216D  => array(0x217D)
  1725.                     ,0x216E  => array(0x217E)
  1726.                     ,0x216F  => array(0x217F)
  1727.                     ,0x24B6  => array(0x24D0)
  1728.                     ,0x24B7  => array(0x24D1)
  1729.                     ,0x24B8  => array(0x24D2)
  1730.                     ,0x24B9  => array(0x24D3)
  1731.                     ,0x24BA  => array(0x24D4)
  1732.                     ,0x24BB  => array(0x24D5)
  1733.                     ,0x24BC  => array(0x24D6)
  1734.                     ,0x24BD  => array(0x24D7)
  1735.                     ,0x24BE  => array(0x24D8)
  1736.                     ,0x24BF  => array(0x24D9)
  1737.                     ,0x24C0  => array(0x24DA)
  1738.                     ,0x24C1  => array(0x24DB)
  1739.                     ,0x24C2  => array(0x24DC)
  1740.                     ,0x24C3  => array(0x24DD)
  1741.                     ,0x24C4  => array(0x24DE)
  1742.                     ,0x24C5  => array(0x24DF)
  1743.                     ,0x24C6  => array(0x24E0)
  1744.                     ,0x24C7  => array(0x24E1)
  1745.                     ,0x24C8  => array(0x24E2)
  1746.                     ,0x24C9  => array(0x24E3)
  1747.                     ,0x24CA  => array(0x24E4)
  1748.                     ,0x24CB  => array(0x24E5)
  1749.                     ,0x24CC  => array(0x24E6)
  1750.                     ,0x24CD  => array(0x24E7)
  1751.                     ,0x24CE  => array(0x24E8)
  1752.                     ,0x24CF  => array(0x24E9)
  1753.                     ,0x3371  => array(0x680x700x61)
  1754.                     ,0x3373  => array(0x610x75)
  1755.                     ,0x3375  => array(0x6F0x76)
  1756.                     ,0x3380  => array(0x700x61)
  1757.                     ,0x3381  => array(0x6E0x61)
  1758.                     ,0x3382  => array(0x3BC0x61)
  1759.                     ,0x3383  => array(0x6D0x61)
  1760.                     ,0x3384  => array(0x6B0x61)
  1761.                     ,0x3385  => array(0x6B0x62)
  1762.                     ,0x3386  => array(0x6D0x62)
  1763.                     ,0x3387  => array(0x670x62)
  1764.                     ,0x338A  => array(0x700x66)
  1765.                     ,0x338B  => array(0x6E0x66)
  1766.                     ,0x338C  => array(0x3BC0x66)
  1767.                     ,0x3390  => array(0x680x7A)
  1768.                     ,0x3391  => array(0x6B0x680x7A)
  1769.                     ,0x3392  => array(0x6D0x680x7A)
  1770.                     ,0x3393  => array(0x670x680x7A)
  1771.                     ,0x3394  => array(0x740x680x7A)
  1772.                     ,0x33A9  => array(0x700x61)
  1773.                     ,0x33AA  => array(0x6B0x700x61)
  1774.                     ,0x33AB  => array(0x6D0x700x61)
  1775.                     ,0x33AC  => array(0x670x700x61)
  1776.                     ,0x33B4  => array(0x700x76)
  1777.                     ,0x33B5  => array(0x6E0x76)
  1778.                     ,0x33B6  => array(0x3BC0x76)
  1779.                     ,0x33B7  => array(0x6D0x76)
  1780.                     ,0x33B8  => array(0x6B0x76)
  1781.                     ,0x33B9  => array(0x6D0x76)
  1782.                     ,0x33BA  => array(0x700x77)
  1783.                     ,0x33BB  => array(0x6E0x77)
  1784.                     ,0x33BC  => array(0x3BC0x77)
  1785.                     ,0x33BD  => array(0x6D0x77)
  1786.                     ,0x33BE  => array(0x6B0x77)
  1787.                     ,0x33BF  => array(0x6D0x77)
  1788.                     ,0x33C0  => array(0x6B0x3C9)
  1789.                     ,0x33C1  => array(0x6D0x3C9/*
  1790.                     ,0x33C2  => array(0x61, 0x2E, 0x6D, 0x2E) */
  1791.                     ,0x33C3  => array(0x620x71)
  1792.                     ,0x33C6  => array(0x630x22150x6B0x67)
  1793.                     ,0x33C7  => array(0x630x6F0x2E)
  1794.                     ,0x33C8  => array(0x640x62)
  1795.                     ,0x33C9  => array(0x670x79)
  1796.                     ,0x33CB  => array(0x680x70)
  1797.                     ,0x33CD  => array(0x6B0x6B)
  1798.                     ,0x33CE  => array(0x6B0x6D)
  1799.                     ,0x33D7  => array(0x700x68)
  1800.                     ,0x33D9  => array(0x700x700x6D)
  1801.                     ,0x33DA  => array(0x700x72)
  1802.                     ,0x33DC  => array(0x730x76)
  1803.                     ,0x33DD  => array(0x770x62)
  1804.                     ,0xFB00  => array(0x660x66)
  1805.                     ,0xFB01  => array(0x660x69)
  1806.                     ,0xFB02  => array(0x660x6C)
  1807.                     ,0xFB03  => array(0x660x660x69)
  1808.                     ,0xFB04  => array(0x660x660x6C)
  1809.                     ,0xFB05  => array(0x730x74)
  1810.                     ,0xFB06  => array(0x730x74)
  1811.                     ,0xFB13  => array(0x5740x576)
  1812.                     ,0xFB14  => array(0x5740x565)
  1813.                     ,0xFB15  => array(0x5740x56B)
  1814.                     ,0xFB16  => array(0x57E0x576)
  1815.                     ,0xFB17  => array(0x5740x56D)
  1816.                     ,0xFF21  => array(0xFF41)
  1817.                     ,0xFF22  => array(0xFF42)
  1818.                     ,0xFF23  => array(0xFF43)
  1819.                     ,0xFF24  => array(0xFF44)
  1820.                     ,0xFF25  => array(0xFF45)
  1821.                     ,0xFF26  => array(0xFF46)
  1822.                     ,0xFF27  => array(0xFF47)
  1823.                     ,0xFF28  => array(0xFF48)
  1824.                     ,0xFF29  => array(0xFF49)
  1825.                     ,0xFF2A  => array(0xFF4A)
  1826.                     ,0xFF2B  => array(0xFF4B)
  1827.                     ,0xFF2C  => array(0xFF4C)
  1828.                     ,0xFF2D  => array(0xFF4D)
  1829.                     ,0xFF2E  => array(0xFF4E)
  1830.                     ,0xFF2F  => array(0xFF4F)
  1831.                     ,0xFF30  => array(0xFF50)
  1832.                     ,0xFF31  => array(0xFF51)
  1833.                     ,0xFF32  => array(0xFF52)
  1834.                     ,0xFF33  => array(0xFF53)
  1835.                     ,0xFF34  => array(0xFF54)
  1836.                     ,0xFF35  => array(0xFF55)
  1837.                     ,0xFF36  => array(0xFF56)
  1838.                     ,0xFF37  => array(0xFF57)
  1839.                     ,0xFF38  => array(0xFF58)
  1840.                     ,0xFF39  => array(0xFF59)
  1841.                     ,0xFF3A  => array(0xFF5A)
  1842.                     ,0x10400 => array(0x10428)
  1843.                     ,0x10401 => array(0x10429)
  1844.                     ,0x10402 => array(0x1042A)
  1845.                     ,0x10403 => array(0x1042B)
  1846.                     ,0x10404 => array(0x1042C)
  1847.                     ,0x10405 => array(0x1042D)
  1848.                     ,0x10406 => array(0x1042E)
  1849.                     ,0x10407 => array(0x1042F)
  1850.                     ,0x10408 => array(0x10430)
  1851.                     ,0x10409 => array(0x10431)
  1852.                     ,0x1040A => array(0x10432)
  1853.                     ,0x1040B => array(0x10433)
  1854.                     ,0x1040C => array(0x10434)
  1855.                     ,0x1040D => array(0x10435)
  1856.                     ,0x1040E => array(0x10436)
  1857.                     ,0x1040F => array(0x10437)
  1858.                     ,0x10410 => array(0x10438)
  1859.                     ,0x10411 => array(0x10439)
  1860.                     ,0x10412 => array(0x1043A)
  1861.                     ,0x10413 => array(0x1043B)
  1862.                     ,0x10414 => array(0x1043C)
  1863.                     ,0x10415 => array(0x1043D)
  1864.                     ,0x10416 => array(0x1043E)
  1865.                     ,0x10417 => array(0x1043F)
  1866.                     ,0x10418 => array(0x10440)
  1867.                     ,0x10419 => array(0x10441)
  1868.                     ,0x1041A => array(0x10442)
  1869.                     ,0x1041B => array(0x10443)
  1870.                     ,0x1041C => array(0x10444)
  1871.                     ,0x1041D => array(0x10445)
  1872.                     ,0x1041E => array(0x10446)
  1873.                     ,0x1041F => array(0x10447)
  1874.                     ,0x10420 => array(0x10448)
  1875.                     ,0x10421 => array(0x10449)
  1876.                     ,0x10422 => array(0x1044A)
  1877.                     ,0x10423 => array(0x1044B)
  1878.                     ,0x10424 => array(0x1044C)
  1879.                     ,0x10425 => array(0x1044D)
  1880.                     ,0x1D400 => array(0x61)
  1881.                     ,0x1D401 => array(0x62)
  1882.                     ,0x1D402 => array(0x63)
  1883.                     ,0x1D403 => array(0x64)
  1884.                     ,0x1D404 => array(0x65)
  1885.                     ,0x1D405 => array(0x66)
  1886.                     ,0x1D406 => array(0x67)
  1887.                     ,0x1D407 => array(0x68)
  1888.                     ,0x1D408 => array(0x69)
  1889.                     ,0x1D409 => array(0x6A)
  1890.                     ,0x1D40A => array(0x6B)
  1891.                     ,0x1D40B => array(0x6C)
  1892.                     ,0x1D40C => array(0x6D)
  1893.                     ,0x1D40D => array(0x6E)
  1894.                     ,0x1D40E => array(0x6F)
  1895.                     ,0x1D40F => array(0x70)
  1896.                     ,0x1D410 => array(0x71)
  1897.                     ,0x1D411 => array(0x72)
  1898.                     ,0x1D412 => array(0x73)
  1899.                     ,0x1D413 => array(0x74)
  1900.                     ,0x1D414 => array(0x75)
  1901.                     ,0x1D415 => array(0x76)
  1902.                     ,0x1D416 => array(0x77)
  1903.                     ,0x1D417 => array(0x78)
  1904.                     ,0x1D418 => array(0x79)
  1905.                     ,0x1D419 => array(0x7A)
  1906.                     ,0x1D434 => array(0x61)
  1907.                     ,0x1D435 => array(0x62)
  1908.                     ,0x1D436 => array(0x63)
  1909.                     ,0x1D437 => array(0x64)
  1910.                     ,0x1D438 => array(0x65)
  1911.                     ,0x1D439 => array(0x66)
  1912.                     ,0x1D43A => array(0x67)
  1913.                     ,0x1D43B => array(0x68)
  1914.                     ,0x1D43C => array(0x69)
  1915.                     ,0x1D43D => array(0x6A)
  1916.                     ,0x1D43E => array(0x6B)
  1917.                     ,0x1D43F => array(0x6C)
  1918.                     ,0x1D440 => array(0x6D)
  1919.                     ,0x1D441 => array(0x6E)
  1920.                     ,0x1D442 => array(0x6F)
  1921.                     ,0x1D443 => array(0x70)
  1922.                     ,0x1D444 => array(0x71)
  1923.                     ,0x1D445 => array(0x72)
  1924.                     ,0x1D446 => array(0x73)
  1925.                     ,0x1D447 => array(0x74)
  1926.                     ,0x1D448 => array(0x75)
  1927.                     ,0x1D449 => array(0x76)
  1928.                     ,0x1D44A => array(0x77)
  1929.                     ,0x1D44B => array(0x78)
  1930.                     ,0x1D44C => array(0x79)
  1931.                     ,0x1D44D => array(0x7A)
  1932.                     ,0x1D468 => array(0x61)
  1933.                     ,0x1D469 => array(0x62)
  1934.                     ,0x1D46A => array(0x63)
  1935.                     ,0x1D46B => array(0x64)
  1936.                     ,0x1D46C => array(0x65)
  1937.                     ,0x1D46D => array(0x66)
  1938.                     ,0x1D46E => array(0x67)
  1939.                     ,0x1D46F => array(0x68)
  1940.                     ,0x1D470 => array(0x69)
  1941.                     ,0x1D471 => array(0x6A)
  1942.                     ,0x1D472 => array(0x6B)
  1943.                     ,0x1D473 => array(0x6C)
  1944.                     ,0x1D474 => array(0x6D)
  1945.                     ,0x1D475 => array(0x6E)
  1946.                     ,0x1D476 => array(0x6F)
  1947.                     ,0x1D477 => array(0x70)
  1948.                     ,0x1D478 => array(0x71)
  1949.                     ,0x1D479 => array(0x72)
  1950.                     ,0x1D47A => array(0x73)
  1951.                     ,0x1D47B => array(0x74)
  1952.                     ,0x1D47C => array(0x75)
  1953.                     ,0x1D47D => array(0x76)
  1954.                     ,0x1D47E => array(0x77)
  1955.                     ,0x1D47F => array(0x78)
  1956.                     ,0x1D480 => array(0x79)
  1957.                     ,0x1D481 => array(0x7A)
  1958.                     ,0x1D49C => array(0x61)
  1959.                     ,0x1D49E => array(0x63)
  1960.                     ,0x1D49F => array(0x64)
  1961.                     ,0x1D4A2 => array(0x67)
  1962.                     ,0x1D4A5 => array(0x6A)
  1963.                     ,0x1D4A6 => array(0x6B)
  1964.                     ,0x1D4A9 => array(0x6E)
  1965.                     ,0x1D4AA => array(0x6F)
  1966.                     ,0x1D4AB => array(0x70)
  1967.                     ,0x1D4AC => array(0x71)
  1968.                     ,0x1D4AE => array(0x73)
  1969.                     ,0x1D4AF => array(0x74)
  1970.                     ,0x1D4B0 => array(0x75)
  1971.                     ,0x1D4B1 => array(0x76)
  1972.                     ,0x1D4B2 => array(0x77)
  1973.                     ,0x1D4B3 => array(0x78)
  1974.                     ,0x1D4B4 => array(0x79)
  1975.                     ,0x1D4B5 => array(0x7A)
  1976.                     ,0x1D4D0 => array(0x61)
  1977.                     ,0x1D4D1 => array(0x62)
  1978.                     ,0x1D4D2 => array(0x63)
  1979.                     ,0x1D4D3 => array(0x64)
  1980.                     ,0x1D4D4 => array(0x65)
  1981.                     ,0x1D4D5 => array(0x66)
  1982.                     ,0x1D4D6 => array(0x67)
  1983.                     ,0x1D4D7 => array(0x68)
  1984.                     ,0x1D4D8 => array(0x69)
  1985.                     ,0x1D4D9 => array(0x6A)
  1986.                     ,0x1D4DA => array(0x6B)
  1987.                     ,0x1D4DB => array(0x6C)
  1988.                     ,0x1D4DC => array(0x6D)
  1989.                     ,0x1D4DD => array(0x6E)
  1990.                     ,0x1D4DE => array(0x6F)
  1991.                     ,0x1D4DF => array(0x70)
  1992.                     ,0x1D4E0 => array(0x71)
  1993.                     ,0x1D4E1 => array(0x72)
  1994.                     ,0x1D4E2 => array(0x73)
  1995.                     ,0x1D4E3 => array(0x74)
  1996.                     ,0x1D4E4 => array(0x75)
  1997.                     ,0x1D4E5 => array(0x76)
  1998.                     ,0x1D4E6 => array(0x77)
  1999.                     ,0x1D4E7 => array(0x78)
  2000.                     ,0x1D4E8 => array(0x79)
  2001.                     ,0x1D4E9 => array(0x7A)
  2002.                     ,0x1D504 => array(0x61)
  2003.                     ,0x1D505 => array(0x62)
  2004.                     ,0x1D507 => array(0x64)
  2005.                     ,0x1D508 => array(0x65)
  2006.                     ,0x1D509 => array(0x66)
  2007.                     ,0x1D50A => array(0x67)
  2008.                     ,0x1D50D => array(0x6A)
  2009.                     ,0x1D50E => array(0x6B)
  2010.                     ,0x1D50F => array(0x6C)
  2011.                     ,0x1D510 => array(0x6D)
  2012.                     ,0x1D511 => array(0x6E)
  2013.                     ,0x1D512 => array(0x6F)
  2014.                     ,0x1D513 => array(0x70)
  2015.                     ,0x1D514 => array(0x71)
  2016.                     ,0x1D516 => array(0x73)
  2017.                     ,0x1D517 => array(0x74)
  2018.                     ,0x1D518 => array(0x75)
  2019.                     ,0x1D519 => array(0x76)
  2020.                     ,0x1D51A => array(0x77)
  2021.                     ,0x1D51B => array(0x78)
  2022.                     ,0x1D51C => array(0x79)
  2023.                     ,0x1D538 => array(0x61)
  2024.                     ,0x1D539 => array(0x62)
  2025.                     ,0x1D53B => array(0x64)
  2026.                     ,0x1D53C => array(0x65)
  2027.                     ,0x1D53D => array(0x66)
  2028.                     ,0x1D53E => array(0x67)
  2029.                     ,0x1D540 => array(0x69)
  2030.                     ,0x1D541 => array(0x6A)
  2031.                     ,0x1D542 => array(0x6B)
  2032.                     ,0x1D543 => array(0x6C)
  2033.                     ,0x1D544 => array(0x6D)
  2034.                     ,0x1D546 => array(0x6F)
  2035.                     ,0x1D54A => array(0x73)
  2036.                     ,0x1D54B => array(0x74)
  2037.                     ,0x1D54C => array(0x75)
  2038.                     ,0x1D54D => array(0x76)
  2039.                     ,0x1D54E => array(0x77)
  2040.                     ,0x1D54F => array(0x78)
  2041.                     ,0x1D550 => array(0x79)
  2042.                     ,0x1D56C => array(0x61)
  2043.                     ,0x1D56D => array(0x62)
  2044.                     ,0x1D56E => array(0x63)
  2045.                     ,0x1D56F => array(0x64)
  2046.                     ,0x1D570 => array(0x65)
  2047.                     ,0x1D571 => array(0x66)
  2048.                     ,0x1D572 => array(0x67)
  2049.                     ,0x1D573 => array(0x68)
  2050.                     ,0x1D574 => array(0x69)
  2051.                     ,0x1D575 => array(0x6A)
  2052.                     ,0x1D576 => array(0x6B)
  2053.                     ,0x1D577 => array(0x6C)
  2054.                     ,0x1D578 => array(0x6D)
  2055.                     ,0x1D579 => array(0x6E)
  2056.                     ,0x1D57A => array(0x6F)
  2057.                     ,0x1D57B => array(0x70)
  2058.                     ,0x1D57C => array(0x71)
  2059.                     ,0x1D57D => array(0x72)
  2060.                     ,0x1D57E => array(0x73)
  2061.                     ,0x1D57F => array(0x74)
  2062.                     ,0x1D580 => array(0x75)
  2063.                     ,0x1D581 => array(0x76)
  2064.                     ,0x1D582 => array(0x77)
  2065.                     ,0x1D583 => array(0x78)
  2066.                     ,0x1D584 => array(0x79)
  2067.                     ,0x1D585 => array(0x7A)
  2068.                     ,0x1D5A0 => array(0x61)
  2069.                     ,0x1D5A1 => array(0x62)
  2070.                     ,0x1D5A2 => array(0x63)
  2071.                     ,0x1D5A3 => array(0x64)
  2072.                     ,0x1D5A4 => array(0x65)
  2073.                     ,0x1D5A5 => array(0x66)
  2074.                     ,0x1D5A6 => array(0x67)
  2075.                     ,0x1D5A7 => array(0x68)
  2076.                     ,0x1D5A8 => array(0x69)
  2077.                     ,0x1D5A9 => array(0x6A)
  2078.                     ,0x1D5AA => array(0x6B)
  2079.                     ,0x1D5AB => array(0x6C)
  2080.                     ,0x1D5AC => array(0x6D)
  2081.                     ,0x1D5AD => array(0x6E)
  2082.                     ,0x1D5AE => array(0x6F)
  2083.                     ,0x1D5AF => array(0x70)
  2084.                     ,0x1D5B0 => array(0x71)
  2085.                     ,0x1D5B1 => array(0x72)
  2086.                     ,0x1D5B2 => array(0x73)
  2087.                     ,0x1D5B3 => array(0x74)
  2088.                     ,0x1D5B4 => array(0x75)
  2089.                     ,0x1D5B5 => array(0x76)
  2090.                     ,0x1D5B6 => array(0x77)
  2091.                     ,0x1D5B7 => array(0x78)
  2092.                     ,0x1D5B8 => array(0x79)
  2093.                     ,0x1D5B9 => array(0x7A)
  2094.                     ,0x1D5D4 => array(0x61)
  2095.                     ,0x1D5D5 => array(0x62)
  2096.                     ,0x1D5D6 => array(0x63)
  2097.                     ,0x1D5D7 => array(0x64)
  2098.                     ,0x1D5D8 => array(0x65)
  2099.                     ,0x1D5D9 => array(0x66)
  2100.                     ,0x1D5DA => array(0x67)
  2101.                     ,0x1D5DB => array(0x68)
  2102.                     ,0x1D5DC => array(0x69)
  2103.                     ,0x1D5DD => array(0x6A)
  2104.                     ,0x1D5DE => array(0x6B)
  2105.                     ,0x1D5DF => array(0x6C)
  2106.                     ,0x1D5E0 => array(0x6D)
  2107.                     ,0x1D5E1 => array(0x6E)
  2108.                     ,0x1D5E2 => array(0x6F)
  2109.                     ,0x1D5E3 => array(0x70)
  2110.                     ,0x1D5E4 => array(0x71)
  2111.                     ,0x1D5E5 => array(0x72)
  2112.                     ,0x1D5E6 => array(0x73)
  2113.                     ,0x1D5E7 => array(0x74)
  2114.                     ,0x1D5E8 => array(0x75)
  2115.                     ,0x1D5E9 => array(0x76)
  2116.                     ,0x1D5EA => array(0x77)
  2117.                     ,0x1D5EB => array(0x78)
  2118.                     ,0x1D5EC => array(0x79)
  2119.                     ,0x1D5ED => array(0x7A)
  2120.                     ,0x1D608 => array(0x61)
  2121.                     ,0x1D609 => array(0x62)
  2122.                     ,0x1D60A => array(0x63)
  2123.                     ,0x1D60B => array(0x64)
  2124.                     ,0x1D60C => array(0x65)
  2125.                     ,0x1D60D => array(0x66)
  2126.                     ,0x1D60E => array(0x67)
  2127.                     ,0x1D60F => array(0x68)
  2128.                     ,0x1D610 => array(0x69)
  2129.                     ,0x1D611 => array(0x6A)
  2130.                     ,0x1D612 => array(0x6B)
  2131.                     ,0x1D613 => array(0x6C)
  2132.                     ,0x1D614 => array(0x6D)
  2133.                     ,0x1D615 => array(0x6E)
  2134.                     ,0x1D616 => array(0x6F)
  2135.                     ,0x1D617 => array(0x70)
  2136.                     ,0x1D618 => array(0x71)
  2137.                     ,0x1D619 => array(0x72)
  2138.                     ,0x1D61A => array(0x73)
  2139.                     ,0x1D61B => array(0x74)
  2140.                     ,0x1D61C => array(0x75)
  2141.                     ,0x1D61D => array(0x76)
  2142.                     ,0x1D61E => array(0x77)
  2143.                     ,0x1D61F => array(0x78)
  2144.                     ,0x1D620 => array(0x79)
  2145.                     ,0x1D621 => array(0x7A)
  2146.                     ,0x1D63C => array(0x61)
  2147.                     ,0x1D63D => array(0x62)
  2148.                     ,0x1D63E => array(0x63)
  2149.                     ,0x1D63F => array(0x64)
  2150.                     ,0x1D640 => array(0x65)
  2151.                     ,0x1D641 => array(0x66)
  2152.                     ,0x1D642 => array(0x67)
  2153.                     ,0x1D643 => array(0x68)
  2154.                     ,0x1D644 => array(0x69)
  2155.                     ,0x1D645 => array(0x6A)
  2156.                     ,0x1D646 => array(0x6B)
  2157.                     ,0x1D647 => array(0x6C)
  2158.                     ,0x1D648 => array(0x6D)
  2159.                     ,0x1D649 => array(0x6E)
  2160.                     ,0x1D64A => array(0x6F)
  2161.                     ,0x1D64B => array(0x70)
  2162.                     ,0x1D64C => array(0x71)
  2163.                     ,0x1D64D => array(0x72)
  2164.                     ,0x1D64E => array(0x73)
  2165.                     ,0x1D64F => array(0x74)
  2166.                     ,0x1D650 => array(0x75)
  2167.                     ,0x1D651 => array(0x76)
  2168.                     ,0x1D652 => array(0x77)
  2169.                     ,0x1D653 => array(0x78)
  2170.                     ,0x1D654 => array(0x79)
  2171.                     ,0x1D655 => array(0x7A)
  2172.                     ,0x1D670 => array(0x61)
  2173.                     ,0x1D671 => array(0x62)
  2174.                     ,0x1D672 => array(0x63)
  2175.                     ,0x1D673 => array(0x64)
  2176.                     ,0x1D674 => array(0x65)
  2177.                     ,0x1D675 => array(0x66)
  2178.                     ,0x1D676 => array(0x67)
  2179.                     ,0x1D677 => array(0x68)
  2180.                     ,0x1D678 => array(0x69)
  2181.                     ,0x1D679 => array(0x6A)
  2182.                     ,0x1D67A => array(0x6B)
  2183.                     ,0x1D67B => array(0x6C)
  2184.                     ,0x1D67C => array(0x6D)
  2185.                     ,0x1D67D => array(0x6E)
  2186.                     ,0x1D67E => array(0x6F)
  2187.                     ,0x1D67F => array(0x70)
  2188.                     ,0x1D680 => array(0x71)
  2189.                     ,0x1D681 => array(0x72)
  2190.                     ,0x1D682 => array(0x73)
  2191.                     ,0x1D683 => array(0x74)
  2192.                     ,0x1D684 => array(0x75)
  2193.                     ,0x1D685 => array(0x76)
  2194.                     ,0x1D686 => array(0x77)
  2195.                     ,0x1D687 => array(0x78)
  2196.                     ,0x1D688 => array(0x79)
  2197.                     ,0x1D689 => array(0x7A)
  2198.                     ,0x1D6A8 => array(0x3B1)
  2199.                     ,0x1D6A9 => array(0x3B2)
  2200.                     ,0x1D6AA => array(0x3B3)
  2201.                     ,0x1D6AB => array(0x3B4)
  2202.                     ,0x1D6AC => array(0x3B5)
  2203.                     ,0x1D6AD => array(0x3B6)
  2204.                     ,0x1D6AE => array(0x3B7)
  2205.                     ,0x1D6AF => array(0x3B8)
  2206.                     ,0x1D6B0 => array(0x3B9)
  2207.                     ,0x1D6B1 => array(0x3BA)
  2208.                     ,0x1D6B2 => array(0x3BB)
  2209.                     ,0x1D6B3 => array(0x3BC)
  2210.                     ,0x1D6B4 => array(0x3BD)
  2211.                     ,0x1D6B5 => array(0x3BE)
  2212.                     ,0x1D6B6 => array(0x3BF)
  2213.                     ,0x1D6B7 => array(0x3C0)
  2214.                     ,0x1D6B8 => array(0x3C1)
  2215.                     ,0x1D6B9 => array(0x3B8)
  2216.                     ,0x1D6BA => array(0x3C3)
  2217.                     ,0x1D6BB => array(0x3C4)
  2218.                     ,0x1D6BC => array(0x3C5)
  2219.                     ,0x1D6BD => array(0x3C6)
  2220.                     ,0x1D6BE => array(0x3C7)
  2221.                     ,0x1D6BF => array(0x3C8)
  2222.                     ,0x1D6C0 => array(0x3C9)
  2223.                     ,0x1D6D3 => array(0x3C3)
  2224.                     ,0x1D6E2 => array(0x3B1)
  2225.                     ,0x1D6E3 => array(0x3B2)
  2226.                     ,0x1D6E4 => array(0x3B3)
  2227.                     ,0x1D6E5 => array(0x3B4)
  2228.                     ,0x1D6E6 => array(0x3B5)
  2229.                     ,0x1D6E7 => array(0x3B6)
  2230.                     ,0x1D6E8 => array(0x3B7)
  2231.                     ,0x1D6E9 => array(0x3B8)
  2232.                     ,0x1D6EA => array(0x3B9)
  2233.                     ,0x1D6EB => array(0x3BA)
  2234.                     ,0x1D6EC => array(0x3BB)
  2235.                     ,0x1D6ED => array(0x3BC)
  2236.                     ,0x1D6EE => array(0x3BD)
  2237.                     ,0x1D6EF => array(0x3BE)
  2238.                     ,0x1D6F0 => array(0x3BF)
  2239.                     ,0x1D6F1 => array(0x3C0)
  2240.                     ,0x1D6F2 => array(0x3C1)
  2241.                     ,0x1D6F3 => array(0x3B8)
  2242.                     ,0x1D6F4 => array(0x3C3)
  2243.                     ,0x1D6F5 => array(0x3C4)
  2244.                     ,0x1D6F6 => array(0x3C5)
  2245.                     ,0x1D6F7 => array(0x3C6)
  2246.                     ,0x1D6F8 => array(0x3C7)
  2247.                     ,0x1D6F9 => array(0x3C8)
  2248.                     ,0x1D6FA => array(0x3C9)
  2249.                     ,0x1D70D => array(0x3C3)
  2250.                     ,0x1D71C => array(0x3B1)
  2251.                     ,0x1D71D => array(0x3B2)
  2252.                     ,0x1D71E => array(0x3B3)
  2253.                     ,0x1D71F => array(0x3B4)
  2254.                     ,0x1D720 => array(0x3B5)
  2255.                     ,0x1D721 => array(0x3B6)
  2256.                     ,0x1D722 => array(0x3B7)
  2257.                     ,0x1D723 => array(0x3B8)
  2258.                     ,0x1D724 => array(0x3B9)
  2259.                     ,0x1D725 => array(0x3BA)
  2260.                     ,0x1D726 => array(0x3BB)
  2261.                     ,0x1D727 => array(0x3BC)
  2262.                     ,0x1D728 => array(0x3BD)
  2263.                     ,0x1D729 => array(0x3BE)
  2264.                     ,0x1D72A => array(0x3BF)
  2265.                     ,0x1D72B => array(0x3C0)
  2266.                     ,0x1D72C => array(0x3C1)
  2267.                     ,0x1D72D => array(0x3B8)
  2268.                     ,0x1D72E => array(0x3C3)
  2269.                     ,0x1D72F => array(0x3C4)
  2270.                     ,0x1D730 => array(0x3C5)
  2271.                     ,0x1D731 => array(0x3C6)
  2272.                     ,0x1D732 => array(0x3C7)
  2273.                     ,0x1D733 => array(0x3C8)
  2274.                     ,0x1D734 => array(0x3C9)
  2275.                     ,0x1D747 => array(0x3C3)
  2276.                     ,0x1D756 => array(0x3B1)
  2277.                     ,0x1D757 => array(0x3B2)
  2278.                     ,0x1D758 => array(0x3B3)
  2279.                     ,0x1D759 => array(0x3B4)
  2280.                     ,0x1D75A => array(0x3B5)
  2281.                     ,0x1D75B => array(0x3B6)
  2282.                     ,0x1D75C => array(0x3B7)
  2283.                     ,0x1D75D => array(0x3B8)
  2284.                     ,0x1D75E => array(0x3B9)
  2285.                     ,0x1D75F => array(0x3BA)
  2286.                     ,0x1D760 => array(0x3BB)
  2287.                     ,0x1D761 => array(0x3BC)
  2288.                     ,0x1D762 => array(0x3BD)
  2289.                     ,0x1D763 => array(0x3BE)
  2290.                     ,0x1D764 => array(0x3BF)
  2291.                     ,0x1D765 => array(0x3C0)
  2292.                     ,0x1D766 => array(0x3C1)
  2293.                     ,0x1D767 => array(0x3B8)
  2294.                     ,0x1D768 => array(0x3C3)
  2295.                     ,0x1D769 => array(0x3C4)
  2296.                     ,0x1D76A => array(0x3C5)
  2297.                     ,0x1D76B => array(0x3C6)
  2298.                     ,0x1D76C => array(0x3C7)
  2299.                     ,0x1D76D => array(0x3C8)
  2300.                     ,0x1D76E => array(0x3C9)
  2301.                     ,0x1D781 => array(0x3C3)
  2302.                     ,0x1D790 => array(0x3B1)
  2303.                     ,0x1D791 => array(0x3B2)
  2304.                     ,0x1D792 => array(0x3B3)
  2305.                     ,0x1D793 => array(0x3B4)
  2306.                     ,0x1D794 => array(0x3B5)
  2307.                     ,0x1D795 => array(0x3B6)
  2308.                     ,0x1D796 => array(0x3B7)
  2309.                     ,0x1D797 => array(0x3B8)
  2310.                     ,0x1D798 => array(0x3B9)
  2311.                     ,0x1D799 => array(0x3BA)
  2312.                     ,0x1D79A => array(0x3BB)
  2313.                     ,0x1D79B => array(0x3BC)
  2314.                     ,0x1D79C => array(0x3BD)
  2315.                     ,0x1D79D => array(0x3BE)
  2316.                     ,0x1D79E => array(0x3BF)
  2317.                     ,0x1D79F => array(0x3C0)
  2318.                     ,0x1D7A0 => array(0x3C1)
  2319.                     ,0x1D7A1 => array(0x3B8)
  2320.                     ,0x1D7A2 => array(0x3C3)
  2321.                     ,0x1D7A3 => array(0x3C4)
  2322.                     ,0x1D7A4 => array(0x3C5)
  2323.                     ,0x1D7A5 => array(0x3C6)
  2324.                     ,0x1D7A6 => array(0x3C7)
  2325.                     ,0x1D7A7 => array(0x3C8)
  2326.                     ,0x1D7A8 => array(0x3C9)
  2327.                     ,0x1D7BB => array(0x3C3)
  2328.                     ,0x3F9   => array(0x3C3)
  2329.                     ,0x1D2C  => array(0x61)
  2330.                     ,0x1D2D  => array(0xE6)
  2331.                     ,0x1D2E  => array(0x62)
  2332.                     ,0x1D30  => array(0x64)
  2333.                     ,0x1D31  => array(0x65)
  2334.                     ,0x1D32  => array(0x1DD)
  2335.                     ,0x1D33  => array(0x67)
  2336.                     ,0x1D34  => array(0x68)
  2337.                     ,0x1D35  => array(0x69)
  2338.                     ,0x1D36  => array(0x6A)
  2339.                     ,0x1D37  => array(0x6B)
  2340.                     ,0x1D38  => array(0x6C)
  2341.                     ,0x1D39  => array(0x6D)
  2342.                     ,0x1D3A  => array(0x6E)
  2343.                     ,0x1D3C  => array(0x6F)
  2344.                     ,0x1D3D  => array(0x223)
  2345.                     ,0x1D3E  => array(0x70)
  2346.                     ,0x1D3F  => array(0x72)
  2347.                     ,0x1D40  => array(0x74)
  2348.                     ,0x1D41  => array(0x75)
  2349.                     ,0x1D42  => array(0x77)
  2350.                     ,0x213B  => array(0x660x610x78)
  2351.                     ,0x3250  => array(0x700x740x65)
  2352.                     ,0x32CC  => array(0x680x67)
  2353.                     ,0x32CE  => array(0x650x76)
  2354.                     ,0x32CF  => array(0x6C0x740x64)
  2355.                     ,0x337A  => array(0x690x75)
  2356.                     ,0x33DE  => array(0x760x22150x6D)
  2357.                     ,0x33DF  => array(0x610x22150x6D)
  2358.                     )
  2359.             ,'norm_combcls' => array
  2360.                     (0x334   => 1
  2361.                     ,0x335   => 1
  2362.                     ,0x336   => 1
  2363.                     ,0x337   => 1
  2364.                     ,0x338   => 1
  2365.                     ,0x93C   => 7
  2366.                     ,0x9BC   => 7
  2367.                     ,0xA3C   => 7
  2368.                     ,0xABC   => 7
  2369.                     ,0xB3C   => 7
  2370.                     ,0xCBC   => 7
  2371.                     ,0x1037  => 7
  2372.                     ,0x3099  => 8
  2373.                     ,0x309A  => 8
  2374.                     ,0x94D   => 9
  2375.                     ,0x9CD   => 9
  2376.                     ,0xA4D   => 9
  2377.                     ,0xACD   => 9
  2378.                     ,0xB4D   => 9
  2379.                     ,0xBCD   => 9
  2380.                     ,0xC4D   => 9
  2381.                     ,0xCCD   => 9
  2382.                     ,0xD4D   => 9
  2383.                     ,0xDCA   => 9
  2384.                     ,0xE3A   => 9
  2385.                     ,0xF84   => 9
  2386.                     ,0x1039  => 9
  2387.                     ,0x1714  => 9
  2388.                     ,0x1734  => 9
  2389.                     ,0x17D2  => 9
  2390.                     ,0x5B0   => 10
  2391.                     ,0x5B1   => 11
  2392.                     ,0x5B2   => 12
  2393.                     ,0x5B3   => 13
  2394.                     ,0x5B4   => 14
  2395.                     ,0x5B5   => 15
  2396.                     ,0x5B6   => 16
  2397.                     ,0x5B7   => 17
  2398.                     ,0x5B8   => 18
  2399.                     ,0x5B9   => 19
  2400.                     ,0x5BB   => 20
  2401.                     ,0x5Bc   => 21
  2402.                     ,0x5BD   => 22
  2403.                     ,0x5BF   => 23
  2404.                     ,0x5C1   => 24
  2405.                     ,0x5C2   => 25
  2406.                     ,0xFB1E  => 26
  2407.                     ,0x64B   => 27
  2408.                     ,0x64C   => 28
  2409.                     ,0x64D   => 29
  2410.                     ,0x64E   => 30
  2411.                     ,0x64F   => 31
  2412.                     ,0x650   => 32
  2413.                     ,0x651   => 33
  2414.                     ,0x652   => 34
  2415.                     ,0x670   => 35
  2416.                     ,0x711   => 36
  2417.                     ,0xC55   => 84
  2418.                     ,0xC56   => 91
  2419.                     ,0xE38   => 103
  2420.                     ,0xE39   => 103
  2421.                     ,0xE48   => 107
  2422.                     ,0xE49   => 107
  2423.                     ,0xE4A   => 107
  2424.                     ,0xE4B   => 107
  2425.                     ,0xEB8   => 118
  2426.                     ,0xEB9   => 118
  2427.                     ,0xEC8   => 122
  2428.                     ,0xEC9   => 122
  2429.                     ,0xECA   => 122
  2430.                     ,0xECB   => 122
  2431.                     ,0xF71   => 129
  2432.                     ,0xF72   => 130
  2433.                     ,0xF7A   => 130
  2434.                     ,0xF7B   => 130
  2435.                     ,0xF7C   => 130
  2436.                     ,0xF7D   => 130
  2437.                     ,0xF80   => 130
  2438.                     ,0xF74   => 132
  2439.                     ,0x321   => 202
  2440.                     ,0x322   => 202
  2441.                     ,0x327   => 202
  2442.                     ,0x328   => 202
  2443.                     ,0x31B   => 216
  2444.                     ,0xF39   => 216
  2445.                     ,0x1D165 => 216
  2446.                     ,0x1D166 => 216
  2447.                     ,0x1D16E => 216
  2448.                     ,0x1D16F => 216
  2449.                     ,0x1D170 => 216
  2450.                     ,0x1D171 => 216
  2451.                     ,0x1D172 => 216
  2452.                     ,0x302A  => 218
  2453.                     ,0x316   => 220
  2454.                     ,0x317   => 220
  2455.                     ,0x318   => 220
  2456.                     ,0x319   => 220
  2457.                     ,0x31C   => 220
  2458.                     ,0x31D   => 220
  2459.                     ,0x31E   => 220
  2460.                     ,0x31F   => 220
  2461.                     ,0x320   => 220
  2462.                     ,0x323   => 220
  2463.                     ,0x324   => 220
  2464.                     ,0x325   => 220
  2465.                     ,0x326   => 220
  2466.                     ,0x329   => 220
  2467.                     ,0x32A   => 220
  2468.                     ,0x32B   => 220
  2469.                     ,0x32C   => 220
  2470.                     ,0x32D   => 220
  2471.                     ,0x32E   => 220
  2472.                     ,0x32F   => 220
  2473.                     ,0x330   => 220
  2474.                     ,0x331   => 220
  2475.                     ,0x332   => 220
  2476.                     ,0x333   => 220
  2477.                     ,0x339   => 220
  2478.                     ,0x33A   => 220
  2479.                     ,0x33B   => 220
  2480.                     ,0x33C   => 220
  2481.                     ,0x347   => 220
  2482.                     ,0x348   => 220
  2483.                     ,0x349   => 220
  2484.                     ,0x34D   => 220
  2485.                     ,0x34E   => 220
  2486.                     ,0x353   => 220
  2487.                     ,0x354   => 220
  2488.                     ,0x355   => 220
  2489.                     ,0x356   => 220
  2490.                     ,0x591   => 220
  2491.                     ,0x596   => 220
  2492.                     ,0x59B   => 220
  2493.                     ,0x5A3   => 220
  2494.                     ,0x5A4   => 220
  2495.                     ,0x5A5   => 220
  2496.                     ,0x5A6   => 220
  2497.                     ,0x5A7   => 220
  2498.                     ,0x5AA   => 220
  2499.                     ,0x655   => 220
  2500.                     ,0x656   => 220
  2501.                     ,0x6E3   => 220
  2502.                     ,0x6EA   => 220
  2503.                     ,0x6ED   => 220
  2504.                     ,0x731   => 220
  2505.                     ,0x734   => 220
  2506.                     ,0x737   => 220
  2507.                     ,0x738   => 220
  2508.                     ,0x739   => 220
  2509.                     ,0x73B   => 220
  2510.                     ,0x73C   => 220
  2511.                     ,0x73E   => 220
  2512.                     ,0x742   => 220
  2513.                     ,0x744   => 220
  2514.                     ,0x746   => 220
  2515.                     ,0x748   => 220
  2516.                     ,0x952   => 220
  2517.                     ,0xF18   => 220
  2518.                     ,0xF19   => 220
  2519.                     ,0xF35   => 220
  2520.                     ,0xF37   => 220
  2521.                     ,0xFC6   => 220
  2522.                     ,0x193B  => 220
  2523.                     ,0x20E8  => 220
  2524.                     ,0x1D17B => 220
  2525.                     ,0x1D17C => 220
  2526.                     ,0x1D17D => 220
  2527.                     ,0x1D17E => 220
  2528.                     ,0x1D17F => 220
  2529.                     ,0x1D180 => 220
  2530.                     ,0x1D181 => 220
  2531.                     ,0x1D182 => 220
  2532.                     ,0x1D18A => 220
  2533.                     ,0x1D18B => 220
  2534.                     ,0x59A   => 222
  2535.                     ,0x5AD   => 222
  2536.                     ,0x1929  => 222
  2537.                     ,0x302D  => 222
  2538.                     ,0x302E  => 224
  2539.                     ,0x302F  => 224
  2540.                     ,0x1D16D => 226
  2541.                     ,0x5AE   => 228
  2542.                     ,0x18A9  => 228
  2543.                     ,0x302B  => 228
  2544.                     ,0x300   => 230
  2545.                     ,0x301   => 230
  2546.                     ,0x302   => 230
  2547.                     ,0x303   => 230
  2548.                     ,0x304   => 230
  2549.                     ,0x305   => 230
  2550.                     ,0x306   => 230
  2551.                     ,0x307   => 230
  2552.                     ,0x308   => 230
  2553.                     ,0x309   => 230
  2554.                     ,0x30A   => 230
  2555.                     ,0x30B   => 230
  2556.                     ,0x30C   => 230
  2557.                     ,0x30D   => 230
  2558.                     ,0x30E   => 230
  2559.                     ,0x30F   => 230
  2560.                     ,0x310   => 230
  2561.                     ,0x311   => 230
  2562.                     ,0x312   => 230
  2563.                     ,0x313   => 230
  2564.                     ,0x314   => 230
  2565.                     ,0x33D   => 230
  2566.                     ,0x33E   => 230
  2567.                     ,0x33F   => 230
  2568.                     ,0x340   => 230
  2569.                     ,0x341   => 230
  2570.                     ,0x342   => 230
  2571.                     ,0x343   => 230
  2572.                     ,0x344   => 230
  2573.                     ,0x346   => 230
  2574.                     ,0x34A   => 230
  2575.                     ,0x34B   => 230
  2576.                     ,0x34C   => 230
  2577.                     ,0x350   => 230
  2578.                     ,0x351   => 230
  2579.                     ,0x352   => 230
  2580.                     ,0x357   => 230
  2581.                     ,0x363   => 230
  2582.                     ,0x364   => 230
  2583.                     ,0x365   => 230
  2584.                     ,0x366   => 230
  2585.                     ,0x367   => 230
  2586.                     ,0x368   => 230
  2587.                     ,0x369   => 230
  2588.                     ,0x36A   => 230
  2589.                     ,0x36B   => 230
  2590.                     ,0x36C   => 230
  2591.                     ,0x36D   => 230
  2592.                     ,0x36E   => 230
  2593.                     ,0x36F   => 230
  2594.                     ,0x483   => 230
  2595.                     ,0x484   => 230
  2596.                     ,0x485   => 230
  2597.                     ,0x486   => 230
  2598.                     ,0x592   => 230
  2599.                     ,0x593   => 230
  2600.                     ,0x594   => 230
  2601.                     ,0x595   => 230
  2602.                     ,0x597   => 230
  2603.                     ,0x598   => 230
  2604.                     ,0x599   => 230
  2605.                     ,0x59C   => 230
  2606.                     ,0x59D   => 230
  2607.                     ,0x59E   => 230
  2608.                     ,0x59F   => 230
  2609.                     ,0x5A0   => 230
  2610.                     ,0x5A1   => 230
  2611.                     ,0x5A8   => 230
  2612.                     ,0x5A9   => 230
  2613.                     ,0x5AB   => 230
  2614.                     ,0x5AC   => 230
  2615.                     ,0x5AF   => 230
  2616.                     ,0x5C4   => 230
  2617.                     ,0x610   => 230
  2618.                     ,0x611   => 230
  2619.                     ,0x612   => 230
  2620.                     ,0x613   => 230
  2621.                     ,0x614   => 230
  2622.                     ,0x615   => 230
  2623.                     ,0x653   => 230
  2624.                     ,0x654   => 230
  2625.                     ,0x657   => 230
  2626.                     ,0x658   => 230
  2627.                     ,0x6D6   => 230
  2628.                     ,0x6D7   => 230
  2629.                     ,0x6D8   => 230
  2630.                     ,0x6D9   => 230
  2631.                     ,0x6DA   => 230
  2632.                     ,0x6DB   => 230
  2633.                     ,0x6DC   => 230
  2634.                     ,0x6DF   => 230
  2635.                     ,0x6E0   => 230
  2636.                     ,0x6E1   => 230
  2637.                     ,0x6E2   => 230
  2638.                     ,0x6E4   => 230
  2639.                     ,0x6E7   => 230
  2640.                     ,0x6E8   => 230
  2641.                     ,0x6EB   => 230
  2642.                     ,0x6EC   => 230
  2643.                     ,0x730   => 230
  2644.                     ,0x732   => 230
  2645.                     ,0x733   => 230
  2646.                     ,0x735   => 230
  2647.                     ,0x736   => 230
  2648.                     ,0x73A   => 230
  2649.                     ,0x73D   => 230
  2650.                     ,0x73F   => 230
  2651.                     ,0x740   => 230
  2652.                     ,0x741   => 230
  2653.                     ,0x743   => 230
  2654.                     ,0x745   => 230
  2655.                     ,0x747   => 230
  2656.                     ,0x749   => 230
  2657.                     ,0x74A   => 230
  2658.                     ,0x951   => 230
  2659.                     ,0x953   => 230
  2660.                     ,0x954   => 230
  2661.                     ,0xF82   => 230
  2662.                     ,0xF83   => 230
  2663.                     ,0xF86   => 230
  2664.                     ,0xF87   => 230
  2665.                     ,0x170D  => 230
  2666.                     ,0x193A  => 230
  2667.                     ,0x20D0  => 230
  2668.                     ,0x20D1  => 230
  2669.                     ,0x20D4  => 230
  2670.                     ,0x20D5  => 230
  2671.                     ,0x20D6  => 230
  2672.                     ,0x20D7  => 230
  2673.                     ,0x20DB  => 230
  2674.                     ,0x20DC  => 230
  2675.                     ,0x20E1  => 230
  2676.                     ,0x20E7  => 230
  2677.                     ,0x20E9  => 230
  2678.                     ,0xFE20  => 230
  2679.                     ,0xFE21  => 230
  2680.                     ,0xFE22  => 230
  2681.                     ,0xFE23  => 230
  2682.                     ,0x1D185 => 230
  2683.                     ,0x1D186 => 230
  2684.                     ,0x1D187 => 230
  2685.                     ,0x1D189 => 230
  2686.                     ,0x1D188 => 230
  2687.                     ,0x1D1AA => 230
  2688.                     ,0x1D1AB => 230
  2689.                     ,0x1D1AC => 230
  2690.                     ,0x1D1AD => 230
  2691.                     ,0x315   => 232
  2692.                     ,0x31A   => 232
  2693.                     ,0x302C  => 232
  2694.                     ,0x35F   => 233
  2695.                     ,0x362   => 233
  2696.                     ,0x35D   => 234
  2697.                     ,0x35E   => 234
  2698.                     ,0x360   => 234
  2699.                     ,0x361   => 234
  2700.                     ,0x345   => 240
  2701.                     )
  2702.             );
  2703. }
  2704. ?>

Documentation generated on Sat, 06 Mar 2010 04:13:42 +0100 by phpDocumentor 1.4.2. This site is hosted and maintained by Daniel HAHLER (Contact).