!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/ecom1.picotech.app/public_html_ecom1/vendor/mpdf/mpdf/src/   drwxr-xr-x
Free 25.2 GB of 117.98 GB (21.36%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     Ucdn.php (128.86 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Mpdf;

class 
Ucdn
{

    
/* HarfBuzz ucdn/unicodedata_db.h */
    /* HarfBuzz ucdn/ucdn.c */
    /* HarfBuzz ucdn/ucdn.h */

    
const SCRIPT_COMMON 0;
    const 
SCRIPT_LATIN 1;
    const 
SCRIPT_GREEK 2;
    const 
SCRIPT_CYRILLIC 3;
    const 
SCRIPT_ARMENIAN 4;
    const 
SCRIPT_HEBREW 5;
    const 
SCRIPT_ARABIC 6;
    const 
SCRIPT_SYRIAC 7;
    const 
SCRIPT_THAANA 8;
    const 
SCRIPT_DEVANAGARI 9;
    const 
SCRIPT_BENGALI 10;
    const 
SCRIPT_GURMUKHI 11;
    const 
SCRIPT_GUJARATI 12;
    const 
SCRIPT_ORIYA 13;
    const 
SCRIPT_TAMIL 14;
    const 
SCRIPT_TELUGU 15;
    const 
SCRIPT_KANNADA 16;
    const 
SCRIPT_MALAYALAM 17;
    const 
SCRIPT_SINHALA 18;
    const 
SCRIPT_THAI 19;
    const 
SCRIPT_LAO 20;
    const 
SCRIPT_TIBETAN 21;
    const 
SCRIPT_MYANMAR 22;
    const 
SCRIPT_GEORGIAN 23;
    const 
SCRIPT_HANGUL 24;
    const 
SCRIPT_ETHIOPIC 25;
    const 
SCRIPT_CHEROKEE 26;
    const 
SCRIPT_CANADIAN_ABORIGINAL 27;
    const 
SCRIPT_OGHAM 28;
    const 
SCRIPT_RUNIC 29;
    const 
SCRIPT_KHMER 30;
    const 
SCRIPT_MONGOLIAN 31;
    const 
SCRIPT_HIRAGANA 32;
    const 
SCRIPT_KATAKANA 33;
    const 
SCRIPT_BOPOMOFO 34;
    const 
SCRIPT_HAN 35;
    const 
SCRIPT_YI 36;
    const 
SCRIPT_OLD_ITALIC 37;
    const 
SCRIPT_GOTHIC 38;
    const 
SCRIPT_DESERET 39;
    const 
SCRIPT_INHERITED 40;
    const 
SCRIPT_TAGALOG 41;
    const 
SCRIPT_HANUNOO 42;
    const 
SCRIPT_BUHID 43;
    const 
SCRIPT_TAGBANWA 44;
    const 
SCRIPT_LIMBU 45;
    const 
SCRIPT_TAI_LE 46;
    const 
SCRIPT_LINEAR_B 47;
    const 
SCRIPT_UGARITIC 48;
    const 
SCRIPT_SHAVIAN 49;
    const 
SCRIPT_OSMANYA 50;
    const 
SCRIPT_CYPRIOT 51;
    const 
SCRIPT_BRAILLE 52;
    const 
SCRIPT_BUGINESE 53;
    const 
SCRIPT_COPTIC 54;
    const 
SCRIPT_NEW_TAI_LUE 55;
    const 
SCRIPT_GLAGOLITIC 56;
    const 
SCRIPT_TIFINAGH 57;
    const 
SCRIPT_SYLOTI_NAGRI 58;
    const 
SCRIPT_OLD_PERSIAN 59;
    const 
SCRIPT_KHAROSHTHI 60;
    const 
SCRIPT_BALINESE 61;
    const 
SCRIPT_CUNEIFORM 62;
    const 
SCRIPT_PHOENICIAN 63;
    const 
SCRIPT_PHAGS_PA 64;
    const 
SCRIPT_NKO 65;
    const 
SCRIPT_SUNDANESE 66;
    const 
SCRIPT_LEPCHA 67;
    const 
SCRIPT_OL_CHIKI 68;
    const 
SCRIPT_VAI 69;
    const 
SCRIPT_SAURASHTRA 70;
    const 
SCRIPT_KAYAH_LI 71;
    const 
SCRIPT_REJANG 72;
    const 
SCRIPT_LYCIAN 73;
    const 
SCRIPT_CARIAN 74;
    const 
SCRIPT_LYDIAN 75;
    const 
SCRIPT_CHAM 76;
    const 
SCRIPT_TAI_THAM 77;
    const 
SCRIPT_TAI_VIET 78;
    const 
SCRIPT_AVESTAN 79;
    const 
SCRIPT_EGYPTIAN_HIEROGLYPHS 80;
    const 
SCRIPT_SAMARITAN 81;
    const 
SCRIPT_LISU 82;
    const 
SCRIPT_BAMUM 83;
    const 
SCRIPT_JAVANESE 84;
    const 
SCRIPT_MEETEI_MAYEK 85;
    const 
SCRIPT_IMPERIAL_ARAMAIC 86;
    const 
SCRIPT_OLD_SOUTH_ARABIAN 87;
    const 
SCRIPT_INSCRIPTIONAL_PARTHIAN 88;
    const 
SCRIPT_INSCRIPTIONAL_PAHLAVI 89;
    const 
SCRIPT_OLD_TURKIC 90;
    const 
SCRIPT_KAITHI 91;
    const 
SCRIPT_BATAK 92;
    const 
SCRIPT_BRAHMI 93;
    const 
SCRIPT_MANDAIC 94;
    const 
SCRIPT_CHAKMA 95;
    const 
SCRIPT_MEROITIC_CURSIVE 96;
    const 
SCRIPT_MEROITIC_HIEROGLYPHS 97;
    const 
SCRIPT_MIAO 98;
    const 
SCRIPT_SHARADA 99;
    const 
SCRIPT_SORA_SOMPENG 100;
    const 
SCRIPT_TAKRI 101;
    const 
SCRIPT_UNKNOWN 102;

    public static function 
get_ucd_record($code)
    {
        if (
$code >= 0x110000) {
            
$index 0;
        } else {
            
$index self::$index0[$code >> (8)] << 5;
            
$offset = ($code >> 3) & ((<< 5) - 1);
            
$index self::$index1[$index $offset] << 3;
            
$offset $code & ((<< 3) - 1);
            
$index self::$index2[$index $offset];
        }
        return 
self::$ucd_records[$index];
    }

    public static function 
get_general_category($code)
    {
        
$ucd_record self::get_ucd_record($code);
        return 
$ucd_record[0];
    }

    public static function 
get_combining_class($code)
    {
        
$ucd_record self::get_ucd_record($code);
        return 
$ucd_record[1];
    }

    public static function 
get_bidi_class($code)
    {
        
$ucd_record self::get_ucd_record($code);
        return 
$ucd_record[2];
    }

    public static function 
get_mirrored($code)
    {
        
$ucd_record self::get_ucd_record($code);
        return 
$ucd_record[3];
    }

    public static function 
get_east_asian_width($code)
    {
        
$ucd_record self::get_ucd_record($code);
        return 
$ucd_record[4];
    }

    public static function 
get_normalization_check($code)
    {
        
$ucd_record self::get_ucd_record($code);
        return 
$ucd_record[5];
    }

    public static function 
get_script($code)
    {
        
$ucd_record self::get_ucd_record($code);
        return 
$ucd_record[6];
    }

    
// mPDF added
    
public static $uni_scriptblock = [
        
/* SCRIPT_COMMON */ => '',
        
/* SCRIPT_LATIN */ => 'latn',
        
/* SCRIPT_GREEK */ => 'grek',
        
/* SCRIPT_CYRILLIC */ => 'cyrl',
        
/* SCRIPT_ARMENIAN */ => 'armn',
        
/* SCRIPT_HEBREW */ => 'hebr',
        
/* SCRIPT_ARABIC */ => 'arab',
        
/* SCRIPT_SYRIAC */ => 'syrc',
        
/* SCRIPT_THAANA */ => 'thaa',
        
/* SCRIPT_DEVANAGARI */ => 'dev2',
        
/* SCRIPT_BENGALI */ 10 => 'bng2',
        
/* SCRIPT_GURMUKHI */ 11 => 'gur2',
        
/* SCRIPT_GUJARATI */ 12 => 'gjr2',
        
/* SCRIPT_ORIYA */ 13 => 'ory2',
        
/* SCRIPT_TAMIL */ 14 => 'tml2',
        
/* SCRIPT_TELUGU */ 15 => 'tel2',
        
/* SCRIPT_KANNADA */ 16 => 'knd2',
        
/* SCRIPT_MALAYALAM */ 17 => 'mlm2',
        
/* SCRIPT_SINHALA */ 18 => 'sinh',
        
/* SCRIPT_THAI */ 19 => 'thai',
        
/* SCRIPT_LAO */ 20 => 'lao ',
        
/* SCRIPT_TIBETAN */ 21 => 'tibt',
        
/* SCRIPT_MYANMAR */ 22 => 'mym2',
        
/* SCRIPT_GEORGIAN */ 23 => 'geor',
        
/* SCRIPT_HANGUL */ 24 => 'jamo'/* there is also a hang tag, but we want to activate jamo features if present */
        /* SCRIPT_ETHIOPIC */ 
25 => 'ethi',
        
/* SCRIPT_CHEROKEE */ 26 => 'cher',
        
/* SCRIPT_CANADIAN_ABORIGINAL */ 27 => 'cans',
        
/* SCRIPT_OGHAM */ 28 => 'ogam',
        
/* SCRIPT_RUNIC */ 29 => 'runr',
        
/* SCRIPT_KHMER */ 30 => 'khmr',
        
/* SCRIPT_MONGOLIAN */ 31 => 'mong',
        
/* SCRIPT_HIRAGANA */ 32 => 'kana',
        
/* SCRIPT_KATAKANA */ 33 => 'kana',
        
/* SCRIPT_BOPOMOFO */ 34 => 'bopo',
        
/* SCRIPT_HAN */ 35 => 'hani',
        
/* SCRIPT_YI */ 36 => 'yi  ',
        
/* SCRIPT_OLD_ITALIC */ 37 => 'ital',
        
/* SCRIPT_GOTHIC */ 38 => 'goth',
        
/* SCRIPT_DESERET */ 39 => 'dsrt',
        
/* SCRIPT_INHERITED */ 40 => '',
        
/* SCRIPT_TAGALOG */ 41 => 'tglg',
        
/* SCRIPT_HANUNOO */ 42 => 'hano',
        
/* SCRIPT_BUHID */ 43 => 'buhd',
        
/* SCRIPT_TAGBANWA */ 44 => 'tagb',
        
/* SCRIPT_LIMBU */ 45 => 'limb',
        
/* SCRIPT_TAI_LE */ 46 => 'tale',
        
/* SCRIPT_LINEAR_B */ 47 => 'linb',
        
/* SCRIPT_UGARITIC */ 48 => 'ugar',
        
/* SCRIPT_SHAVIAN */ 49 => 'shaw',
        
/* SCRIPT_OSMANYA */ 50 => 'osma',
        
/* SCRIPT_CYPRIOT */ 51 => 'cprt',
        
/* SCRIPT_BRAILLE */ 52 => 'brai',
        
/* SCRIPT_BUGINESE */ 53 => 'bugi',
        
/* SCRIPT_COPTIC */ 54 => 'copt',
        
/* SCRIPT_NEW_TAI_LUE */ 55 => 'talu',
        
/* SCRIPT_GLAGOLITIC */ 56 => 'glag',
        
/* SCRIPT_TIFINAGH */ 57 => 'tfng',
        
/* SCRIPT_SYLOTI_NAGRI */ 58 => 'sylo',
        
/* SCRIPT_OLD_PERSIAN */ 59 => 'xpeo',
        
/* SCRIPT_KHAROSHTHI */ 60 => 'khar',
        
/* SCRIPT_BALINESE */ 61 => 'bali',
        
/* SCRIPT_CUNEIFORM */ 62 => 'xsux',
        
/* SCRIPT_PHOENICIAN */ 63 => 'phnx',
        
/* SCRIPT_PHAGS_PA */ 64 => 'phag',
        
/* SCRIPT_NKO */ 65 => 'nko ',
        
/* SCRIPT_SUNDANESE */ 66 => 'sund',
        
/* SCRIPT_LEPCHA */ 67 => 'lepc',
        
/* SCRIPT_OL_CHIKI */ 68 => 'olck',
        
/* SCRIPT_VAI */ 69 => 'vai ',
        
/* SCRIPT_SAURASHTRA */ 70 => 'saur',
        
/* SCRIPT_KAYAH_LI */ 71 => 'kali',
        
/* SCRIPT_REJANG */ 72 => 'rjng',
        
/* SCRIPT_LYCIAN */ 73 => 'lyci',
        
/* SCRIPT_CARIAN */ 74 => 'cari',
        
/* SCRIPT_LYDIAN */ 75 => 'lydi',
        
/* SCRIPT_CHAM */ 76 => 'cham',
        
/* SCRIPT_TAI_THAM */ 77 => 'lana',
        
/* SCRIPT_TAI_VIET */ 78 => 'tavt',
        
/* SCRIPT_AVESTAN */ 79 => 'avst',
        
/* SCRIPT_EGYPTIAN_HIEROGLYPHS */ 80 => 'egyp',
        
/* SCRIPT_SAMARITAN */ 81 => 'samr',
        
/* SCRIPT_LISU */ 82 => 'lisu',
        
/* SCRIPT_BAMUM */ 83 => 'bamu',
        
/* SCRIPT_JAVANESE */ 84 => 'java',
        
/* SCRIPT_MEETEI_MAYEK */ 85 => 'mtei',
        
/* SCRIPT_IMPERIAL_ARAMAIC */ 86 => 'armi',
        
/* SCRIPT_OLD_SOUTH_ARABIAN */ 87 => 'sarb',
        
/* SCRIPT_INSCRIPTIONAL_PARTHIAN */ 88 => 'prti',
        
/* SCRIPT_INSCRIPTIONAL_PAHLAVI */ 89 => 'phli',
        
/* SCRIPT_OLD_TURKIC */ 90 => 'orkh',
        
/* SCRIPT_KAITHI */ 91 => 'kthi',
        
/* SCRIPT_BATAK */ 92 => 'batk',
        
/* SCRIPT_BRAHMI */ 93 => 'brah',
        
/* SCRIPT_MANDAIC */ 94 => 'mand',
        
/* SCRIPT_CHAKMA */ 95 => 'cakm',
        
/* SCRIPT_MEROITIC_CURSIVE */ 96 => 'merc',
        
/* SCRIPT_MEROITIC_HIEROGLYPHS */ 97 => 'mero',
        
/* SCRIPT_MIAO */ 98 => 'plrd',
        
/* SCRIPT_SHARADA */ 99 => 'shrd',
        
/* SCRIPT_SORA_SOMPENG */ 100 => 'sora',
        
/* SCRIPT_TAKRI */ 101 => 'takr',
        
/* SCRIPT_UNKNOWN */ 102 => '',
    ];

    public static 
$ot_languages = [
        
'aa' => 'AFR '/* Afar */
        
'ab' => 'ABK '/* Abkhazian */
        
'abq' => 'ABA '/* Abaza */
        
'ada' => 'DNG '/* Dangme */
        
'ady' => 'ADY '/* Adyghe */
        
'af' => 'AFK '/* Afrikaans */
        
'aii' => 'SWA '/* Swadaya Aramaic */
        
'aiw' => 'ARI '/* Aari */
        
'alt' => 'ALT '/* [Southern] Altai */
        
'am' => 'AMH '/* Amharic */
        
'amf' => 'HBN '/* Hammer-Banna */
        
'ar' => 'ARA '/* Arabic */
        
'arn' => 'MAP '/* Mapudungun */
        
'as' => 'ASM '/* Assamese */
        
'ath' => 'ATH '/* Athapaskan [family] */
        
'atv' => 'ALT '/* [Northern] Altai */
        
'av' => 'AVR '/* Avaric */
        
'awa' => 'AWA '/* Awadhi */
        
'ay' => 'AYM '/* Aymara */
        
'az' => 'AZE '/* Azerbaijani */
        
'ba' => 'BSH '/* Bashkir */
        
'bai' => 'BML '/* Bamileke [family] */
        
'bal' => 'BLI '/* Baluchi */
        
'bci' => 'BAU '/* Baule */
        
'bcq' => 'BCH '/* Bench */
        
'be' => 'BEL '/* Belarussian */
        
'bem' => 'BEM '/* Bemba (Zambia) */
        
'ber' => 'BER '/* Berber [family] */
        
'bfq' => 'BAD '/* Badaga */
        
'bft' => 'BLT '/* Balti */
        
'bfy' => 'BAG '/* Baghelkhandi */
        
'bg' => 'BGR '/* Bulgarian */
        
'bhb' => 'BHI '/* Bhili */
        
'bho' => 'BHO '/* Bhojpuri */
        
'bik' => 'BIK '/* Bikol */
        
'bin' => 'EDO '/* Bini */
        
'bjt' => 'BLN '/* Balanta-Ganja */
        
'bla' => 'BKF '/* Blackfoot */
        
'ble' => 'BLN '/* Balanta-Kentohe */
        
'bm' => 'BMB '/* Bambara */
        
'bn' => 'BEN '/* Bengali */
        
'bo' => 'TIB '/* Tibetan */
        
'br' => 'BRE '/* Breton */
        
'bra' => 'BRI '/* Braj Bhasha */
        
'brh' => 'BRH '/* Brahui */
        
'bs' => 'BOS '/* Bosnian */
        
'btb' => 'BTI '/* Beti (Cameroon) */
        
'bxr' => 'RBU '/* Russian Buriat */
        
'byn' => 'BIL '/* Bilen */
        
'ca' => 'CAT '/* Catalan */
        
'ce' => 'CHE '/* Chechen */
        
'ceb' => 'CEB '/* Cebuano */
        
'chp' => 'CHP '/* Chipewyan */
        
'chr' => 'CHR '/* Cherokee */
        
'ckt' => 'CHK '/* Chukchi */
        
'cop' => 'COP '/* Coptic */
        
'cr' => 'CRE '/* Cree */
        
'crh' => 'CRT '/* Crimean Tatar */
        
'crj' => 'ECR '/* [Southern] East Cree */
        
'crl' => 'ECR '/* [Northern] East Cree */
        
'crm' => 'MCR '/* Moose Cree */
        
'crx' => 'CRR '/* Carrier */
        
'cs' => 'CSY '/* Czech */
        
'cu' => 'CSL '/* Church Slavic */
        
'cv' => 'CHU '/* Chuvash */
        
'cwd' => 'DCR '/* Woods Cree */
        
'cy' => 'WEL '/* Welsh */
        
'da' => 'DAN '/* Danish */
        
'dap' => 'NIS '/* Nisi (India) */
        
'dar' => 'DAR '/* Dargwa */
        
'de' => 'DEU '/* German */
        
'din' => 'DNK '/* Dinka */
        
'dje' => 'DJR '/* Djerma */
        
'dng' => 'DUN '/* Dungan */
        
'doi' => 'DGR '/* Dogri */
        
'dsb' => 'LSB '/* Lower Sorbian */
        
'dv' => 'DIV '/* Dhivehi */
        
'dyu' => 'JUL '/* Jula */
        
'dz' => 'DZN '/* Dzongkha */
        
'ee' => 'EWE '/* Ewe */
        
'efi' => 'EFI '/* Efik */
        
'el' => 'ELL '/* Modern Greek (1453-) */
        
'grc' => 'PGR '/* Polytonic Greek */
        
'en' => 'ENG '/* English */
        
'eo' => 'NTO '/* Esperanto */
        
'eot' => 'BTI '/* Beti (Côte d'Ivoire) */
        
'es' => 'ESP '/* Spanish */
        
'et' => 'ETI '/* Estonian */
        
'eu' => 'EUQ '/* Basque */
        
'eve' => 'EVN '/* Even */
        
'evn' => 'EVK '/* Evenki */
        
'fa' => 'FAR '/* Persian */
        
'ff' => 'FUL '/* Fulah */
        
'fi' => 'FIN '/* Finnish */
        
'fil' => 'PIL '/* Filipino */
        
'fj' => 'FJI '/* Fijian */
        
'fo' => 'FOS '/* Faroese */
        
'fon' => 'FON '/* Fon */
        
'fr' => 'FRA '/* French */
        
'fur' => 'FRL '/* Friulian */
        
'fy' => 'FRI '/* Western Frisian */
        
'ga' => 'IRI '/* Irish */
        
'gaa' => 'GAD '/* Ga */
        
'gag' => 'GAG '/* Gagauz */
        
'gbm' => 'GAW '/* Garhwali */
        
'gd' => 'GAE '/* Scottish Gaelic */
        
'gez' => 'GEZ '/* Ge'ez */
        
'gl' => 'GAL '/* Galician */
        
'gld' => 'NAN '/* Nanai */
        
'gn' => 'GUA '/* Guarani */
        
'gon' => 'GON '/* Gondi */
        
'grt' => 'GRO '/* Garo */
        
'gru' => 'SOG '/* Sodo Gurage */
        
'gu' => 'GUJ '/* Gujarati */
        
'guk' => 'GMZ '/* Gumuz */
        
'gv' => 'MNX '/* Manx Gaelic */
        
'ha' => 'HAU '/* Hausa */
        
'har' => 'HRI '/* Harari */
        
'haw' => 'HAW '/* Hawaiin */
        
'he' => 'IWR '/* Hebrew */
        
'hi' => 'HIN '/* Hindi */
        
'hil' => 'HIL '/* Hiligaynon */
        
'hnd' => 'HND '/* [Southern] Hindko */
        
'hne' => 'CHH '/* Chattisgarhi */
        
'hno' => 'HND '/* [Northern] Hindko */
        
'hoc' => 'HO  '/* Ho */
        
'hoj' => 'HAR '/* Harauti */
        
'hr' => 'HRV '/* Croatian */
        
'hsb' => 'USB '/* Upper Sorbian */
        
'ht' => 'HAI '/* Haitian */
        
'hu' => 'HUN '/* Hungarian */
        
'hy' => 'HYE '/* Armenian */
        
'id' => 'IND '/* Indonesian */
        
'ig' => 'IBO '/* Igbo */
        
'igb' => 'EBI '/* Ebira */
        
'ijo' => 'IJO '/* Ijo [family] */
        
'ilo' => 'ILO '/* Ilokano */
        
'inh' => 'ING '/* Ingush */
        
'is' => 'ISL '/* Icelandic */
        
'it' => 'ITA '/* Italian */
        
'iu' => 'INU '/* Inuktitut */
        
'ja' => 'JAN '/* Japanese */
        
'jv' => 'JAV '/* Javanese */
        
'ka' => 'KAT '/* Georgian */
        
'kaa' => 'KRK '/* Karakalpak */
        
'kam' => 'KMB '/* Kamba (Kenya) */
        
'kar' => 'KRN '/* Karen [family] */
        
'kbd' => 'KAB '/* Kabardian */
        
'kdr' => 'KRM '/* Karaim */
        
'kdt' => 'KUY '/* Kuy */
        
'kex' => 'KKN '/* Kokni */
        
'kfr' => 'KAC '/* Kachchi */
        
'kfy' => 'KMN '/* Kumaoni */
        
'kha' => 'KSI '/* Khasi */
        
'khb' => 'XBD '/* Tai Lue */
        
'khw' => 'KHW '/* Khowar */
        
'ki' => 'KIK '/* Kikuyu */
        
'kjh' => 'KHA '/* Khakass */
        
'kk' => 'KAZ '/* Kazakh */
        
'kl' => 'GRN '/* Kalaallisut */
        
'kln' => 'KAL '/* Kalenjin */
        
'km' => 'KHM '/* Central Khmer */
        
'kmb' => 'MBN '/* [North] Mbundu */
        
'kmw' => 'KMO '/* Komo (Democratic Republic of Congo) */
        
'kn' => 'KAN '/* Kannada */
        
'ko' => 'KOR '/* Korean */
        
'koi' => 'KOP '/* Komi-Permyak */
        
'kok' => 'KOK '/* Konkani */
        
'kpe' => 'KPL '/* Kpelle */
        
'kpv' => 'KOZ '/* Komi-Zyrian */
        
'kpy' => 'KYK '/* Koryak */
        
'kqy' => 'KRT '/* Koorete */
        
'kr' => 'KNR '/* Kanuri */
        
'kri' => 'KRI '/* Krio */
        
'krl' => 'KRL '/* Karelian */
        
'kru' => 'KUU '/* Kurukh */
        
'ks' => 'KSH '/* Kashmiri */
        
'ku' => 'KUR '/* Kurdish */
        
'kum' => 'KUM '/* Kumyk */
        
'kvd' => 'KUI '/* Kui (Indonesia) */
        
'kxc' => 'KMS '/* Komso */
        
'kxu' => 'KUI '/* Kui (India) */
        
'ky' => 'KIR '/* Kirghiz */
        
'la' => 'LAT '/* Latin */
        
'lad' => 'JUD '/* Ladino */
        
'lb' => 'LTZ '/* Luxembourgish */
        
'lbe' => 'LAK '/* Lak */
        
'lbj' => 'LDK '/* Ladakhi */
        
'lez' => 'LEZ '/* Lezgi */
        
'lg' => 'LUG '/* Luganda */
        
'lif' => 'LMB '/* Limbu */
        
'lld' => 'LAD '/* Ladin */
        
'lmn' => 'LAM '/* Lambani */
        
'ln' => 'LIN '/* Lingala */
        
'lo' => 'LAO '/* Lao */
        
'lt' => 'LTH '/* Lithuanian */
        
'lu' => 'LUB '/* Luba-Katanga */
        
'lua' => 'LUB '/* Luba-Kasai */
        
'luo' => 'LUO '/* Luo (Kenya and Tanzania) */
        
'lus' => 'MIZ '/* Mizo */
        
'luy' => 'LUH '/* Luhya [macrolanguage] */
        
'lv' => 'LVI '/* Latvian */
        
'lzz' => 'LAZ '/* Laz */
        
'mai' => 'MTH '/* Maithili */
        
'mdc' => 'MLE '/* Male (Papua New Guinea) */
        
'mdf' => 'MOK '/* Moksha */
        
'mdy' => 'MLE '/* Male (Ethiopia) */
        
'men' => 'MDE '/* Mende (Sierra Leone) */
        
'mg' => 'MLG '/* Malagasy */
        
'mhr' => 'LMA '/* Low Mari */
        
'mi' => 'MRI '/* Maori */
        
'mk' => 'MKD '/* Macedonian */
        
'ml' => 'MLR '/* Malayalam reformed  (MAL is Malayalam Traditional) */
        
'mn' => 'MNG '/* Mongolian */
        
'mnc' => 'MCH '/* Manchu */
        
'mni' => 'MNI '/* Manipuri */
        
'mnk' => 'MND '/* Mandinka */
        
'mns' => 'MAN '/* Mansi */
        
'mnw' => 'MON '/* Mon */
        
'mo' => 'MOL '/* Moldavian */
        
'moh' => 'MOH '/* Mohawk */
        
'mpe' => 'MAJ '/* Majang */
        
'mr' => 'MAR '/* Marathi */
        
'mrj' => 'HMA '/* High Mari */
        
'ms' => 'MLY '/* Malay */
        
'mt' => 'MTS '/* Maltese */
        
'mwr' => 'MAW '/* Marwari */
        
'my' => 'BRM '/* Burmese */
        
'mym' => 'MEN '/* Me'en */
        
'myv' => 'ERZ '/* Erzya */
        
'nag' => 'NAG '/* Naga-Assamese */
        
'nb' => 'NOR '/* Norwegian BokmÃ¥l */
        
'nco' => 'SIB '/* Sibe */
        
'nd' => 'NDB '/* [North] Ndebele */
        
'ne' => 'NEP '/* Nepali */
        
'new' => 'NEW '/* Newari */
        
'ng' => 'NDG '/* Ndonga */
        
'ngl' => 'LMW '/* Lomwe */
        
'niu' => 'NIU '/* Niuean */
        
'niv' => 'GIL '/* Gilyak */
        
'nl' => 'NLD '/* Dutch */
        
'nn' => 'NYN '/* Norwegian Nynorsk */
        
'no' => 'NOR '/* Norwegian (deprecated) */
        
'nod' => 'NTA '/* Northern Tai */
        
'nog' => 'NOG '/* Nogai */
        
'nqo' => 'NKO '/* N'Ko */
        
'nr' => 'NDB '/* [South] Ndebele */
        
'nsk' => 'NAS '/* Naskapi */
        
'nso' => 'SOT '/* [Northern] Sotho */
        
'ny' => 'CHI '/* Nyanja */
        
'nyn' => 'NKL '/* Nkole */
        
'oc' => 'OCI '/* Occitan (post 1500) */
        
'oj' => 'OJB '/* Ojibwa */
        
'ojs' => 'OCR '/* Oji-Cree */
        
'om' => 'ORO '/* Oromo */
        
'or' => 'ORI '/* Oriya */
        
'os' => 'OSS '/* Ossetian */
        
'pa' => 'PAN '/* Panjabi */
        
'pce' => 'PLG '/* [Ruching] Palaung */
        
'pi' => 'PAL '/* Pali */
        
'pl' => 'PLK '/* Polish */
        
'pll' => 'PLG '/* [Shwe] Palaung */
        
'plp' => 'PAP '/* Palpa */
        
'prs' => 'DRI '/* Dari */
        
'ps' => 'PAS '/* Pushto */
        
'pt' => 'PTG '/* Portuguese */
        
'raj' => 'RAJ '/* Rajasthani */
        
'rbb' => 'PLG '/* [Rumai] Palaung */
        
'ria' => 'RIA '/* Riang (India) */
        
'ril' => 'RIA '/* Riang (Myanmar) */
        
'rki' => 'ARK '/* Arakanese */
        
'rm' => 'RMS '/* Rhaeto-Romanic */
        
'ro' => 'ROM '/* Romanian */
        
'rom' => 'ROY '/* Romany */
        
'ru' => 'RUS '/* Russian */
        
'rue' => 'RSY '/* Rusyn */
        
'rw' => 'RUA '/* Ruanda */
        
'sa' => 'SAN '/* Sanskrit */
        
'sah' => 'YAK '/* Yakut */
        
'sat' => 'SAT '/* Santali */
        
'sck' => 'SAD '/* Sadri */
        
'scs' => 'SLA '/* [North] Slavey */
        
'sd' => 'SND '/* Sindhi */
        
'se' => 'NSM '/* Northern Sami */
        
'seh' => 'SNA '/* Sena */
        
'sel' => 'SEL '/* Selkup */
        
'sg' => 'SGO '/* Sango */
        
'shn' => 'SHN '/* Shan */
        
'si' => 'SNH '/* Sinhala */
        
'sid' => 'SID '/* Sidamo */
        
'sjd' => 'KSM '/* Kildin Sami */
        
'sk' => 'SKY '/* Slovak */
        
'skr' => 'SRK '/* Seraiki */
        
'sl' => 'SLV '/* Slovenian */
        
'sm' => 'SMO '/* Samoan */
        
'sma' => 'SSM '/* Southern Sami */
        
'smj' => 'LSM '/* Lule Sami */
        
'smn' => 'ISM '/* Inari Sami */
        
'sms' => 'SKS '/* Skolt Sami */
        
'snk' => 'SNK '/* Soninke */
        
'so' => 'SML '/* Somali */
        
'sq' => 'SQI '/* Albanian */
        
'sr' => 'SRB '/* Serbian */
        
'srr' => 'SRR '/* Serer */
        
'ss' => 'SWZ '/* Swazi */
        
'st' => 'SOT '/* [Southern] Sotho */
        
'suq' => 'SUR '/* Suri */
        
'sv' => 'SVE '/* Swedish */
        
'sva' => 'SVA '/* Svan */
        
'sw' => 'SWK '/* Swahili */
        
'swb' => 'CMR '/* Comorian */
        
'syr' => 'SYR '/* Syriac */
        
'ta' => 'TAM '/* Tamil */
        
'tab' => 'TAB '/* Tabasaran */
        
'tcy' => 'TUL '/* Tulu */
        
'te' => 'TEL '/* Telugu */
        
'tem' => 'TMN '/* Temne */
        
'tg' => 'TAJ '/* Tajik */
        
'th' => 'THA '/* Thai */
        
'ti' => 'TGY '/* Tigrinya */
        
'tig' => 'TGR '/* Tigre */
        
'tk' => 'TKM '/* Turkmen */
        
'tn' => 'TNA '/* Tswana */
        
'to' => 'TGN '/* Tonga (Tonga Islands) */
        
'tr' => 'TRK '/* Turkish */
        
'tru' => 'TUA '/* Turoyo Aramaic */
        
'ts' => 'TSG '/* Tsonga */
        
'tt' => 'TAT '/* Tatar */
        
'tw' => 'TWI '/* Twi */
        
'ty' => 'THT '/* Tahitian */
        
'tyv' => 'TUV '/* Tuvin */
        
'udm' => 'UDM '/* Udmurt */
        
'ug' => 'UYG '/* Uighur */
        
'uk' => 'UKR '/* Ukrainian */
        
'umb' => 'MBN '/* [South] Mbundu */
        
'unr' => 'MUN '/* Mundari */
        
'ur' => 'URD '/* Urdu */
        
'uz' => 'UZB '/* Uzbek */
        
've' => 'VEN '/* Venda */
        
'vi' => 'VIT '/* Vietnamese */
        
'vmw' => 'MAK '/* Makua */
        
'wbm' => 'WA  '/* Wa */
        
'wbr' => 'WAG '/* Wagdi */
        
'wo' => 'WLF '/* Wolof */
        
'xal' => 'KLM '/* Kalmyk */
        
'xh' => 'XHS '/* Xhosa */
        
'xom' => 'KMO '/* Komo (Sudan) */
        
'xsl' => 'SSL '/* South Slavey */
        
'yi' => 'JII '/* Yiddish */
        
'yid' => 'JII '/* Yiddish */
        
'yo' => 'YBA '/* Yoruba */
        
'yso' => 'NIS '/* Nisi (China) */
        
'zne' => 'ZND '/* Zande */
        
'zu' => 'ZUL '/* Zulu */
        
'zh-cn' => 'ZHS '/* Chinese (China) */
        
'zh-hk' => 'ZHH '/* Chinese (Hong Kong) */
        
'zh-mo' => 'ZHT '/* Chinese (Macao) */
        
'zh-sg' => 'ZHS '/* Chinese (Singapore) */
        
'zh-tw' => 'ZHT '/* Chinese (Taiwan) */
    
];

    
// hb-unicode.h
    
const UNICODE_GENERAL_CATEGORY_CONTROL 0;   /* Cc */
    
const UNICODE_GENERAL_CATEGORY_FORMAT 1;   /* Cf */
    
const UNICODE_GENERAL_CATEGORY_UNASSIGNED 2;   /* Cn */
    
const UNICODE_GENERAL_CATEGORY_PRIVATE_USE 3;   /* Co */
    
const UNICODE_GENERAL_CATEGORY_SURROGATE 4;   /* Cs */
    
const UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER 5;  /* Ll */
    
const UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER 6;  /* Lm */
    
const UNICODE_GENERAL_CATEGORY_OTHER_LETTER 7;  /* Lo */
    
const UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER 8;  /* Lt */
    
const UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER 9;  /* Lu */
    
const UNICODE_GENERAL_CATEGORY_SPACING_MARK 10;  /* Mc */
    
const UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK 11;  /* Me */
    
const UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK 12;  /* Mn */
    
const UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER 13;  /* Nd */
    
const UNICODE_GENERAL_CATEGORY_LETTER_NUMBER 14;  /* Nl */
    
const UNICODE_GENERAL_CATEGORY_OTHER_NUMBER 15;  /* No */
    
const UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION 16/* Pc */
    
const UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION 17;  /* Pd */
    
const UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION 18/* Pe */
    
const UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION 19/* Pf */
    
const UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION 20/* Pi */
    
const UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION 21/* Po */
    
const UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION 22;  /* Ps */
    
const UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL 23;  /* Sc */
    
const UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL 24;  /* Sk */
    
const UNICODE_GENERAL_CATEGORY_MATH_SYMBOL 25;  /* Sm */
    
const UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL 26;  /* So */
    
const UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR 27;  /* Zl */
    
const UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR 28/* Zp */
    
const UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR 29;  /* Zs */

    
function general_category_is_mark($gen_cat)
    {
        return 
$gen_cat == self::UNICODE_GENERAL_CATEGORY_SPACING_MARK || $gen_cat == self::UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK ||
            
$gen_cat == self::UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK;
        
// define UNICODE_GENERAL_CATEGORY_IS_MARK(gen_cat)
        //if (FLAG(gen_cat) & (FLAG(UNICODE_GENERAL_CATEGORY_SPACING_MARK) | FLAG(UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK) | FLAG(UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK))) { return true; }
    
}

    const 
BIDI_CLASS_L 0;
    const 
BIDI_CLASS_LRE 1;
    const 
BIDI_CLASS_LRO 2;
    const 
BIDI_CLASS_R 3;
    const 
BIDI_CLASS_AL 4;
    const 
BIDI_CLASS_RLE 5;
    const 
BIDI_CLASS_RLO 6;
    const 
BIDI_CLASS_PDF 7;
    const 
BIDI_CLASS_EN 8;
    const 
BIDI_CLASS_ES 9;
    const 
BIDI_CLASS_ET 10;
    const 
BIDI_CLASS_AN 11;
    const 
BIDI_CLASS_CS 12;
    const 
BIDI_CLASS_NSM 13;
    const 
BIDI_CLASS_BN 14;
    const 
BIDI_CLASS_B 15;
    const 
BIDI_CLASS_S 16;
    const 
BIDI_CLASS_WS 17;
    const 
BIDI_CLASS_ON 18;

    
// UNIDATA_VERSION 6.2.0
    /* a list of unique database records */
    /* struct {
      category;
      combining;
      bidi_class;
      mirrored;
      east_asian_width;
      normalization_check;
      script;
      }
     */
    
private static $ucd_records = [
        [
2018050102],
        [
00140500],
        [
00160500],
        [
00150500],
        [
00170500],
        [
290170300],
        [
210180300],
        [
210100300],
        [
230100300],
        [
220181300],
        [
180181300],
        [
25090300],
        [
210120300],
        [
17090300],
        [
13080300],
        [
250181300],
        [
250180300],
        [
9000301],
        [
240180300],
        [
160180300],
        [
5000301],
        [
290120500],
        [
210180400],
        [
230100400],
        [
260180300],
        [
240180400],
        [
260180500],
        [
7000401],
        [
200181500],
        [
10140400],
        [
260180400],
        [
260100400],
        [
250100400],
        [
15080400],
        [
5000500],
        [
190181500],
        [
150180400],
        [
9000501],
        [
9000401],
        [
250180400],
        [
5000401],
        [
5000501],
        [
7000501],
        [
8000501],
        [
6000501],
        [
60180500],
        [
6000500],
        [
240180500],
        [
60180400],
        [
6000400],
        [
2401805034],
        [
122301304040],
        [
122321304040],
        [
122201304040],
        [
122161304040],
        [
122021304040],
        [
1211304040],
        [
122401304040],
        [
1201304040],
        [
122331304040],
        [
122341304040],
        [
9000502],
        [
5000502],
        [
240180502],
        [
2018050102],
        [
6000502],
        [
210180500],
        [
9000402],
        [
5000402],
        [
90005054],
        [
50005054],
        [
250180502],
        [
9000503],
        [
9000403],
        [
5000403],
        [
5000503],
        [
26000503],
        [
12230130503],
        [
122301305040],
        [
110130503],
        [
9000504],
        [
6000504],
        [
21000504],
        [
5000504],
        [
21000500],
        [
170180504],
        [
230100504],
        [
12220130505],
        [
12230130505],
        [
12222130505],
        [
12228130505],
        [
1210130505],
        [
1211130505],
        [
1212130505],
        [
1213130505],
        [
1214130505],
        [
1215130505],
        [
1216130505],
        [
1217130505],
        [
1218130505],
        [
1219130505],
        [
1220130505],
        [
1221130505],
        [
1222130505],
        [
17030505],
        [
1223130505],
        [
21030505],
        [
1224130505],
        [
1225130505],
        [
7030505],
        [
10110506],
        [
250180506],
        [
25040506],
        [
210100506],
        [
23040506],
        [
210120500],
        [
21040506],
        [
260180506],
        [
12230130506],
        [
1230130506],
        [
1231130506],
        [
1232130506],
        [
21040500],
        [
7040506],
        [
6040500],
        [
12271305040],
        [
12281305040],
        [
12291305040],
        [
12301305040],
        [
12311305040],
        [
12321305040],
        [
12331305040],
        [
12341305040],
        [
122201305040],
        [
12220130506],
        [
130110500],
        [
210110506],
        [
12351305040],
        [
10110500],
        [
6040506],
        [
13080506],
        [
26040506],
        [
21040507],
        [
1040507],
        [
7040507],
        [
1236130507],
        [
12230130507],
        [
12220130507],
        [
7040508],
        [
120130508],
        [
130305065],
        [
70305065],
        [
122301305065],
        [
122201305065],
        [
60305065],
        [
2601805065],
        [
2101805065],
        [
70305081],
        [
122301305081],
        [
60305081],
        [
210305081],
        [
70305094],
        [
122201305094],
        [
210305094],
        [
1227130506],
        [
1228130506],
        [
1229130506],
        [
120130509],
        [
10000509],
        [
7000509],
        [
127130509],
        [
129130509],
        [
12230130509],
        [
13000509],
        [
21000509],
        [
6000509],
        [
1201305010],
        [
100005010],
        [
70005010],
        [
1271305010],
        [
1291305010],
        [
130005010],
        [
2301005010],
        [
150005010],
        [
260005010],
        [
1201305011],
        [
100005011],
        [
70005011],
        [
1271305011],
        [
1291305011],
        [
130005011],
        [
1201305012],
        [
100005012],
        [
70005012],
        [
1271305012],
        [
1291305012],
        [
130005012],
        [
210005012],
        [
2301005012],
        [
1201305013],
        [
100005013],
        [
70005013],
        [
1271305013],
        [
1291305013],
        [
130005013],
        [
260005013],
        [
150005013],
        [
1201305014],
        [
70005014],
        [
100005014],
        [
1291305014],
        [
130005014],
        [
150005014],
        [
2601805014],
        [
2301005014],
        [
100005015],
        [
70005015],
        [
1201305015],
        [
1291305015],
        [
12841305015],
        [
12911305015],
        [
130005015],
        [
1501805015],
        [
260005015],
        [
100005016],
        [
70005016],
        [
1271305016],
        [
120005016],
        [
1201305016],
        [
1291305016],
        [
130005016],
        [
100005017],
        [
70005017],
        [
1201305017],
        [
1291305017],
        [
130005017],
        [
150005017],
        [
260005017],
        [
100005018],
        [
70005018],
        [
1291305018],
        [
1201305018],
        [
210005018],
        [
70005019],
        [
1201305019],
        [
121031305019],
        [
1291305019],
        [
230100500],
        [
60005019],
        [
121071305019],
        [
210005019],
        [
130005019],
        [
70005020],
        [
1201305020],
        [
121181305020],
        [
60005020],
        [
121221305020],
        [
130005020],
        [
70005021],
        [
260005021],
        [
210005021],
        [
122201305021],
        [
130005021],
        [
150005021],
        [
122161305021],
        [
2201815021],
        [
1801815021],
        [
100005021],
        [
121291305021],
        [
121301305021],
        [
1201305021],
        [
121321305021],
        [
122301305021],
        [
1291305021],
        [
26000500],
        [
70005022],
        [
100005022],
        [
1201305022],
        [
1271305022],
        [
1291305022],
        [
130005022],
        [
210005022],
        [
122201305022],
        [
260005022],
        [
90005023],
        [
70005023],
        [
60005023],
        [
70002024],
        [
70005024],
        [
70005025],
        [
122301305025],
        [
210005025],
        [
150005025],
        [
2601805025],
        [
70005026],
        [
1701805027],
        [
70005027],
        [
210005027],
        [
2901705028],
        [
70005028],
        [
2201815028],
        [
1801815028],
        [
70005029],
        [
140005029],
        [
70005041],
        [
1201305041],
        [
1291305041],
        [
70005042],
        [
1201305042],
        [
1291305042],
        [
70005043],
        [
1201305043],
        [
70005044],
        [
1201305044],
        [
70005030],
        [
1201305030],
        [
100005030],
        [
1291305030],
        [
210005030],
        [
60005030],
        [
2301005030],
        [
122301305030],
        [
130005030],
        [
1501805030],
        [
2101805031],
        [
1701805031],
        [
1201305031],
        [
2901705031],
        [
130005031],
        [
70005031],
        [
60005031],
        [
122281305031],
        [
70005045],
        [
1201305045],
        [
100005045],
        [
122221305045],
        [
122301305045],
        [
122201305045],
        [
2601805045],
        [
2101805045],
        [
130005045],
        [
70005046],
        [
70005055],
        [
100005055],
        [
130005055],
        [
150005055],
        [
2601805055],
        [
2601805030],
        [
70005053],
        [
122301305053],
        [
122201305053],
        [
100005053],
        [
210005053],
        [
70005077],
        [
100005077],
        [
1201305077],
        [
1291305077],
        [
122301305077],
        [
122201305077],
        [
130005077],
        [
210005077],
        [
60005077],
        [
1201305061],
        [
100005061],
        [
70005061],
        [
1271305061],
        [
109005061],
        [
130005061],
        [
210005061],
        [
260005061],
        [
122301305061],
        [
122201305061],
        [
1201305066],
        [
100005066],
        [
70005066],
        [
109005066],
        [
1291305066],
        [
130005066],
        [
70005092],
        [
1271305092],
        [
100005092],
        [
1201305092],
        [
109005092],
        [
210005092],
        [
70005067],
        [
100005067],
        [
1201305067],
        [
1271305067],
        [
210005067],
        [
130005067],
        [
130005068],
        [
70005068],
        [
60005068],
        [
210005068],
        [
210005066],
        [
1211305040],
        [
10000500],
        [
7000500],
        [
6000503],
        [
122341305040],
        [
122141305040],
        [
122021305040],
        [
122331305040],
        [
8000502],
        [
290170500],
        [
10140500],
        [
101405040],
        [
1000500],
        [
1030500],
        [
170180400],
        [
170180500],
        [
200180400],
        [
190180400],
        [
220180500],
        [
200180500],
        [
270170500],
        [
280150500],
        [
1010500],
        [
1050500],
        [
1070500],
        [
1020500],
        [
1060500],
        [
210100400],
        [
210100500],
        [
160180500],
        [
250120500],
        [
220181500],
        [
180181500],
        [
250180500],
        [
15080500],
        [
25090500],
        [
6000401],
        [
230100100],
        [
1101305040],
        [
9000500],
        [
5000400],
        [
260100500],
        [
250181500],
        [
150180500],
        [
14000401],
        [
14000501],
        [
250181400],
        [
250100500],
        [
220181200],
        [
180181200],
        [
26000400],
        [
260005052],
        [
90005056],
        [
50005056],
        [
2601805054],
        [
122301305054],
        [
2101805054],
        [
1501805054],
        [
50005023],
        [
70005057],
        [
60005057],
        [
210005057],
        [
1291305057],
        [
2601802035],
        [
260180200],
        [
290170000],
        [
210180200],
        [
60002035],
        [
7000200],
        [
140002035],
        [
170180200],
        [
220180200],
        [
180180200],
        [
122181302040],
        [
122281302040],
        [
122321302040],
        [
122221302040],
        [
10224002024],
        [
6000200],
        [
70002032],
        [
1281302040],
        [
240180200],
        [
60002032],
        [
70002033],
        [
60002033],
        [
70002034],
        [
26000200],
        [
15000200],
        [
260002024],
        [
2601802024],
        [
15000400],
        [
150180200],
        [
260002033],
        [
70002035],
        [
201802035],
        [
2018020102],
        [
70002036],
        [
60002036],
        [
2601802036],
        [
70005082],
        [
60005082],
        [
210005082],
        [
70005069],
        [
60005069],
        [
2101805069],
        [
130005069],
        [
7000503],
        [
210180503],
        [
60180503],
        [
70005083],
        [
140005083],
        [
122301305083],
        [
210005083],
        [
24000500],
        [
70005058],
        [
1201305058],
        [
1291305058],
        [
100005058],
        [
2601805058],
        [
15000500],
        [
70005064],
        [
2101805064],
        [
100005070],
        [
70005070],
        [
1291305070],
        [
210005070],
        [
130005070],
        [
130005071],
        [
70005071],
        [
1201305071],
        [
122201305071],
        [
210005071],
        [
70005072],
        [
1201305072],
        [
100005072],
        [
109005072],
        [
210005072],
        [
1201305084],
        [
100005084],
        [
70005084],
        [
1271305084],
        [
109005084],
        [
210005084],
        [
60005084],
        [
130005084],
        [
70005076],
        [
1201305076],
        [
100005076],
        [
130005076],
        [
210005076],
        [
60005022],
        [
70005078],
        [
122301305078],
        [
122201305078],
        [
60005078],
        [
210005078],
        [
70005085],
        [
100005085],
        [
1201305085],
        [
210005085],
        [
60005085],
        [
1291305085],
        [
130005085],
        [
201802024],
        [
400050102],
        [
300040102],
        [
2018040102],
        [
1226130505],
        [
25090505],
        [
24040506],
        [
180180500],
        [
160180200],
        [
210120200],
        [
210100200],
        [
25090200],
        [
17090200],
        [
250181200],
        [
250180200],
        [
230100200],
        [
210180000],
        [
210100000],
        [
230100000],
        [
220181000],
        [
180181000],
        [
25090000],
        [
210120000],
        [
17090000],
        [
13080000],
        [
250181000],
        [
250180000],
        [
9000001],
        [
240180000],
        [
160180000],
        [
5000001],
        [
210180100],
        [
220181100],
        [
180181100],
        [
70001033],
        [
6000100],
        [
70001024],
        [
260180000],
        [
260180100],
        [
250180100],
        [
10180500],
        [
70005047],
        [
140180502],
        [
150180502],
        [
260180502],
        [
70005073],
        [
70005074],
        [
70005037],
        [
150005037],
        [
70005038],
        [
140005038],
        [
70005048],
        [
210005048],
        [
70005059],
        [
210005059],
        [
140005059],
        [
90005039],
        [
50005039],
        [
70005049],
        [
70005050],
        [
130005050],
        [
70305051],
        [
70305086],
        [
210305086],
        [
150305086],
        [
70305063],
        [
150305063],
        [
2101805063],
        [
70305075],
        [
210305075],
        [
70305097],
        [
70305096],
        [
70305060],
        [
1201305060],
        [
122201305060],
        [
122301305060],
        [
1211305060],
        [
1291305060],
        [
150305060],
        [
210305060],
        [
70305087],
        [
150305087],
        [
210305087],
        [
70305079],
        [
2101805079],
        [
70305088],
        [
150305088],
        [
70305089],
        [
150305089],
        [
70305090],
        [
150110506],
        [
100005093],
        [
1201305093],
        [
70005093],
        [
1291305093],
        [
210005093],
        [
1501805093],
        [
130005093],
        [
1201305091],
        [
100005091],
        [
70005091],
        [
1291305091],
        [
1271305091],
        [
210005091],
        [
10005091],
        [
700050100],
        [
1300050100],
        [
122301305095],
        [
70005095],
        [
1201305095],
        [
100005095],
        [
1291305095],
        [
130005095],
        [
210005095],
        [
1201305099],
        [
100005099],
        [
70005099],
        [
109005099],
        [
210005099],
        [
130005099],
        [
700050101],
        [
12013050101],
        [
1000050101],
        [
1090050101],
        [
12713050101],
        [
1300050101],
        [
70005062],
        [
140005062],
        [
210005062],
        [
70005080],
        [
70005098],
        [
100005098],
        [
1201305098],
        [
60005098],
        [
1021600500],
        [
1022600500],
        [
12230130502],
        [
25000500],
        [
13080500],
        [
260002032],
    ];

    
/* Mirror unicode characters. Bidirectional Algorithm, at http://www.unicode.org/unicode/reports/tr9/  */

    
public static $mirror_pairs = [
        
40 => 41,
        
41 => 40,
        
60 => 62,
        
62 => 60,
        
91 => 93,
        
93 => 91,
        
123 => 125,
        
125 => 123,
        
171 => 187,
        
187 => 171,
        
3898 => 3899,
        
3899 => 3898,
        
3900 => 3901,
        
3901 => 3900,
        
5787 => 5788,
        
5788 => 5787,
        
8249 => 8250,
        
8250 => 8249,
        
8261 => 8262,
        
8262 => 8261,
        
8317 => 8318,
        
8318 => 8317,
        
8333 => 8334,
        
8334 => 8333,
        
8712 => 8715,
        
8713 => 8716,
        
8714 => 8717,
        
8715 => 8712,
        
8716 => 8713,
        
8717 => 8714,
        
8725 => 10741,
        
8764 => 8765,
        
8765 => 8764,
        
8771 => 8909,
        
8786 => 8787,
        
8787 => 8786,
        
8788 => 8789,
        
8789 => 8788,
        
8804 => 8805,
        
8805 => 8804,
        
8806 => 8807,
        
8807 => 8806,
        
8808 => 8809,
        
8809 => 8808,
        
8810 => 8811,
        
8811 => 8810,
        
8814 => 8815,
        
8815 => 8814,
        
8816 => 8817,
        
8817 => 8816,
        
8818 => 8819,
        
8819 => 8818,
        
8820 => 8821,
        
8821 => 8820,
        
8822 => 8823,
        
8823 => 8822,
        
8824 => 8825,
        
8825 => 8824,
        
8826 => 8827,
        
8827 => 8826,
        
8828 => 8829,
        
8829 => 8828,
        
8830 => 8831,
        
8831 => 8830,
        
8832 => 8833,
        
8833 => 8832,
        
8834 => 8835,
        
8835 => 8834,
        
8836 => 8837,
        
8837 => 8836,
        
8838 => 8839,
        
8839 => 8838,
        
8840 => 8841,
        
8841 => 8840,
        
8842 => 8843,
        
8843 => 8842,
        
8847 => 8848,
        
8848 => 8847,
        
8849 => 8850,
        
8850 => 8849,
        
8856 => 10680,
        
8866 => 8867,
        
8867 => 8866,
        
8870 => 10974,
        
8872 => 10980,
        
8873 => 10979,
        
8875 => 10981,
        
8880 => 8881,
        
8881 => 8880,
        
8882 => 8883,
        
8883 => 8882,
        
8884 => 8885,
        
8885 => 8884,
        
8886 => 8887,
        
8887 => 8886,
        
8905 => 8906,
        
8906 => 8905,
        
8907 => 8908,
        
8908 => 8907,
        
8909 => 8771,
        
8912 => 8913,
        
8913 => 8912,
        
8918 => 8919,
        
8919 => 8918,
        
8920 => 8921,
        
8921 => 8920,
        
8922 => 8923,
        
8923 => 8922,
        
8924 => 8925,
        
8925 => 8924,
        
8926 => 8927,
        
8927 => 8926,
        
8928 => 8929,
        
8929 => 8928,
        
8930 => 8931,
        
8931 => 8930,
        
8932 => 8933,
        
8933 => 8932,
        
8934 => 8935,
        
8935 => 8934,
        
8936 => 8937,
        
8937 => 8936,
        
8938 => 8939,
        
8939 => 8938,
        
8940 => 8941,
        
8941 => 8940,
        
8944 => 8945,
        
8945 => 8944,
        
8946 => 8954,
        
8947 => 8955,
        
8948 => 8956,
        
8950 => 8957,
        
8951 => 8958,
        
8954 => 8946,
        
8955 => 8947,
        
8956 => 8948,
        
8957 => 8950,
        
8958 => 8951,
        
8968 => 8969,
        
8969 => 8968,
        
8970 => 8971,
        
8971 => 8970,
        
9001 => 9002,
        
9002 => 9001,
        
10088 => 10089,
        
10089 => 10088,
        
10090 => 10091,
        
10091 => 10090,
        
10092 => 10093,
        
10093 => 10092,
        
10094 => 10095,
        
10095 => 10094,
        
10096 => 10097,
        
10097 => 10096,
        
10098 => 10099,
        
10099 => 10098,
        
10100 => 10101,
        
10101 => 10100,
        
10179 => 10180,
        
10180 => 10179,
        
10181 => 10182,
        
10182 => 10181,
        
10184 => 10185,
        
10185 => 10184,
        
10187 => 10189,
        
10189 => 10187,
        
10197 => 10198,
        
10198 => 10197,
        
10205 => 10206,
        
10206 => 10205,
        
10210 => 10211,
        
10211 => 10210,
        
10212 => 10213,
        
10213 => 10212,
        
10214 => 10215,
        
10215 => 10214,
        
10216 => 10217,
        
10217 => 10216,
        
10218 => 10219,
        
10219 => 10218,
        
10220 => 10221,
        
10221 => 10220,
        
10222 => 10223,
        
10223 => 10222,
        
10627 => 10628,
        
10628 => 10627,
        
10629 => 10630,
        
10630 => 10629,
        
10631 => 10632,
        
10632 => 10631,
        
10633 => 10634,
        
10634 => 10633,
        
10635 => 10636,
        
10636 => 10635,
        
10637 => 10640,
        
10638 => 10639,
        
10639 => 10638,
        
10640 => 10637,
        
10641 => 10642,
        
10642 => 10641,
        
10643 => 10644,
        
10644 => 10643,
        
10645 => 10646,
        
10646 => 10645,
        
10647 => 10648,
        
10648 => 10647,
        
10680 => 8856,
        
10688 => 10689,
        
10689 => 10688,
        
10692 => 10693,
        
10693 => 10692,
        
10703 => 10704,
        
10704 => 10703,
        
10705 => 10706,
        
10706 => 10705,
        
10708 => 10709,
        
10709 => 10708,
        
10712 => 10713,
        
10713 => 10712,
        
10714 => 10715,
        
10715 => 10714,
        
10741 => 8725,
        
10744 => 10745,
        
10745 => 10744,
        
10748 => 10749,
        
10749 => 10748,
        
10795 => 10796,
        
10796 => 10795,
        
10797 => 10798,
        
10798 => 10797,
        
10804 => 10805,
        
10805 => 10804,
        
10812 => 10813,
        
10813 => 10812,
        
10852 => 10853,
        
10853 => 10852,
        
10873 => 10874,
        
10874 => 10873,
        
10877 => 10878,
        
10878 => 10877,
        
10879 => 10880,
        
10880 => 10879,
        
10881 => 10882,
        
10882 => 10881,
        
10883 => 10884,
        
10884 => 10883,
        
10891 => 10892,
        
10892 => 10891,
        
10897 => 10898,
        
10898 => 10897,
        
10899 => 10900,
        
10900 => 10899,
        
10901 => 10902,
        
10902 => 10901,
        
10903 => 10904,
        
10904 => 10903,
        
10905 => 10906,
        
10906 => 10905,
        
10907 => 10908,
        
10908 => 10907,
        
10913 => 10914,
        
10914 => 10913,
        
10918 => 10919,
        
10919 => 10918,
        
10920 => 10921,
        
10921 => 10920,
        
10922 => 10923,
        
10923 => 10922,
        
10924 => 10925,
        
10925 => 10924,
        
10927 => 10928,
        
10928 => 10927,
        
10931 => 10932,
        
10932 => 10931,
        
10939 => 10940,
        
10940 => 10939,
        
10941 => 10942,
        
10942 => 10941,
        
10943 => 10944,
        
10944 => 10943,
        
10945 => 10946,
        
10946 => 10945,
        
10947 => 10948,
        
10948 => 10947,
        
10949 => 10950,
        
10950 => 10949,
        
10957 => 10958,
        
10958 => 10957,
        
10959 => 10960,
        
10960 => 10959,
        
10961 => 10962,
        
10962 => 10961,
        
10963 => 10964,
        
10964 => 10963,
        
10965 => 10966,
        
10966 => 10965,
        
10974 => 8870,
        
10979 => 8873,
        
10980 => 8872,
        
10981 => 8875,
        
10988 => 10989,
        
10989 => 10988,
        
10999 => 11000,
        
11000 => 10999,
        
11001 => 11002,
        
11002 => 11001,
        
11778 => 11779,
        
11779 => 11778,
        
11780 => 11781,
        
11781 => 11780,
        
11785 => 11786,
        
11786 => 11785,
        
11788 => 11789,
        
11789 => 11788,
        
11804 => 11805,
        
11805 => 11804,
        
11808 => 11809,
        
11809 => 11808,
        
11810 => 11811,
        
11811 => 11810,
        
11812 => 11813,
        
11813 => 11812,
        
11814 => 11815,
        
11815 => 11814,
        
11816 => 11817,
        
11817 => 11816,
        
12296 => 12297,
        
12297 => 12296,
        
12298 => 12299,
        
12299 => 12298,
        
12300 => 12301,
        
12301 => 12300,
        
12302 => 12303,
        
12303 => 12302,
        
12304 => 12305,
        
12305 => 12304,
        
12308 => 12309,
        
12309 => 12308,
        
12310 => 12311,
        
12311 => 12310,
        
12312 => 12313,
        
12313 => 12312,
        
12314 => 12315,
        
12315 => 12314,
        
65113 => 65114,
        
65114 => 65113,
        
65115 => 65116,
        
65116 => 65115,
        
65117 => 65118,
        
65118 => 65117,
        
65124 => 65125,
        
65125 => 65124,
        
65288 => 65289,
        
65289 => 65288,
        
65308 => 65310,
        
65310 => 65308,
        
65339 => 65341,
        
65341 => 65339,
        
65371 => 65373,
        
65373 => 65371,
        
65375 => 65376,
        
65376 => 65375,
        
65378 => 65379,
        
65379 => 65378,
    ];


    
/* index tables for the database records */

    
private static $index0 = [
        
01234567891011121314151617181920,
        
212223242526272829303132333435363738,
        
394041424344454647484950515253535353,
        
535353535353535353535353535353535353,
        
535354525353535353535353535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353555657575758,
        
596061626364656667676767676767676767,
        
676767676767676767676767676767676767,
        
676767676767676767676767676768697070,
        
716970707273747474747474747474747474,
        
747474747474747474747475767778798081,
        
828384858687707070888990919270937094,
        
957070707096707070707070707070979797,
        
98997070707070707070707070100100100100,
        
1017070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
70707070707070707070707070707070102102,
        
10370707070104707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
7070707070707070707070707070707010570,
        
707070707070707070707070707070707070,
        
707070707070707070707070106107108109110,
        
1111121137070707070707070707070707070,
        
707070707070707011470115116117118119120,
        
12112270707070707070705253535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353535353535353,
        
535353535353535353535353535353535353,
        
5353535353535353535353535353123525353,
        
53535353535353535353535353124125126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
1261261261261267676127126126126126128126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
126126126126126126126126126126126126126126,
        
12612870707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
70707070707012913070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707070707070707070,
        
707070707070707070707374747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
7474747474747474747474747413173747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
747474747474747474747474747474747474,
        
7474747474747474747474747474747474131,
    ];

    private static 
$index1 = [
        
01023456788910111112130001415,
        
161718192021222324252627282930293132,
        
333435273029273637383940414243444546,
        
474827274927272727272727505152275354,
        
535454545454555454545657585960616263,
        
646465656667686970717273747576657778,
        
798081828384858687888990919293949596,
        
979797979898989899100101101101101102103,
        
101101101101101101104105101101101101101101,
        
101101101101101106107108108108109110111112,
        
112112112113114115116117118119120106121121,
        
121122123106124125126127128128128128129130,
        
131132133134135128128128128128128128128128,
        
128128136137138139140141142143144145145145,
        
146147148149128128128128128128150150150150,
        
151152153106154155156156156157158159160160,
        
161162163164165166167167167168106106106106,
        
106106106106169170106106106106106106171172,
        
173174175176176176176176176177178179180176,
        
181182183184185186187188188189190191192193,
        
194195196197198199200201202203203204205206,
        
207208209210211212213106214215216217217218,
        
219220221222223106224225226106227228229230,
        
230231232233234235236237238239240106241242,
        
243244245242246247248249250106251252253254,
        
255256257258258257259260261262263264265266,
        
106267268269270271271270272273274275276277,
        
278279280106281282283284284284284285286287,
        
288106289290291292293294295296294294297298,
        
295299300301106106302106303304304304304304,
        
305306307308309310106106106106311312313314,
        
315316317318319320321322106106106106323324,
        
325326327328329330331332331331331333334335,
        
336337338339338338338340341342343344106106,
        
106106345345345345345346347348349350351352,
        
353354355345356357349358359359359359360361,
        
362362362362362363364364364364364364364364,
        
364364364364365365365365365365365365365365,
        
365365365365365365365365365365366366366366,
        
366366366366366367368367366366366366366367,
        
366366366366367368367366368366366366366366,
        
366366367366366366366366366366366369370371,
        
372373366366374375376376376376376376376376,
        
376376377106378379379379379379379379379379,
        
379379379379379379379379379379379379379379,
        
379379379379379379379379379379379379379379,
        
379379379379379379379379379379379379379379,
        
379379379379379379379379379379379379379379,
        
379379379379379379379379379379379380379379,
        
381382382383384384384384384384384384384385,
        
386106387388389106390390391106392392393106,
        
394395396106397397397397397397398399400401,
        
402403404405406407408409410411412412412412,
        
413412412412412412412106412412412412412414,
        
379379379379379379379379415106416416416417,
        
418419420421422423424424424425426106427427,
        
427427427428429429430431432433434434434434,
        
435435436437438438438438438438439440441442,
        
443444445446445446447448106106106106106106,
        
106106106106449450450450450450451452453454,
        
455456457458459460461462462462463464465466,
        
467467467467468469470471472472472472473474,
        
475476477478479480481481481482106106106106,
        
106106106106483106484485486487488106545454,
        
54489490565656565649149249354494545454,
        
495565656496497498499500501106106502272727,
        
27272727272727272727272727272750350427,
        
2727272727272727272727505506507508505506,
        
505506507508505509505506505507505510505510,
        
505510511512513514515516505517518519520521,
        
522523524525526527528529530531532533534535,
        
53653756538539540539541106106542543544545546,
        
106547548549550551552553554555556557558559,
        
560559561562563564565566567568569568570571,
        
568572568573574575576577578579580581582583,
        
584585586587588583583589590591592593583583,
        
594574595596583583597583583568598599568600,
        
601602603603603603603603603603604568568605,
        
606574574607568568568568573608568609106568,
        
568568568610106106106568611106106612612612,
        
612612613613614615615615615615615615615615,
        
616612612617617617617617617617617617618617,
        
617617617618568617617619568620569621622623,
        
624569568619572568574625626622627568568568,
        
568628568568568629630568568568568568631568,
        
632568631633634617617635617617617636568568,
        
568568568568637568568572568568638639612640,
        
640641568568568568568642643644645646647574,
        
574648648648648648648648648648648648648648,
        
648648648648648648648648648648648648648648,
        
648648648648648574574574574574574574574574,
        
574574574574574574574649650650651583583574,
        
652597653654655656657658659574660583661662,
        
663664645574574586652664665666667583583583,
        
583668669583583583583670671672645673674568,
        
568568568568568574574675676677678106106106,
        
106106106106106106106106106106106106106106,
        
106106106679679679679679680681681681681681,
        
682683684685686929292929292929292929292,
        
687688689690691691691691692693694694694694,
        
694694694695696697366366368106368368368368,
        
368368368368698698698698699700701702703704,
        
529705106106106106106106106106706706706707,
        
706706706706706706706706706706708106706706,
        
706706706706706706706706706706706706706706,
        
706706706706706706706706706706709106106106,
        
710711712713714715716717718719720721721721,
        
721721721721721721722723724725725725725725,
        
725725725725725726727728728728728729730364,
        
364364364364364364364364364731732733728728,
        
728734710710710710711106725725735735735736,
        
737738733733733739740741735735735742737738,
        
733733733733743741733744745745745745745746,
        
745745745745745745745745745745745733733733,
        
747748733733733733733733733733733733733749,
        
733733733747750751751751751751751751751751,
        
751751751751751751751751751751751751751751,
        
751751751751751751751751751751751751751751,
        
751751751751751751751751751751751751751751,
        
751751751751751751751751751751751751751751,
        
751751751751751751751751751751751751751751,
        
751751751751751751752753568568568568568568,
        
568568751751751751751751751751751751751751,
        
751751751751751751751751751751751751751754,
        
753753753753753753755755756755755755755755,
        
755755755755755755755755755755755755755755,
        
755755755755755755755755755755755755755755,
        
755755755755755755755755755755755755755755,
        
755755755755755755755755755755755755755755,
        
755755755755755755755755755755755755755755,
        
755755755757758758758758758758759106760760,
        
760760760761762762762762762762762762762762,
        
762762762762762762762762762762762762762762,
        
762762762762762762762762762763762762764765,
        
106106101101101101101766767768101101101769,
        
7707707707707707707707707717727731066464774,
        
775776277772727272727272777877927780781,
        
10627782106106106106106106106106106783784785,
        
786786787788789790791791791791791791792106,
        
793794794794794794795796797798799800801801,
        
802803804805806806807808809809810811812813,
        
364364364814815816816816816816817818819820,
        
821822106106106106823823823823823824825106,
        
826827828829345345830831832832832832832832,
        
833834835106106836837838839106840840840106,
        
368368106106106106106106106106106106106106,
        
106106106106106106837837837837841842843844,
        
845846846846846846846846846846846846846846,
        
846846846846846846846846846846846846846846,
        
846846846846846846846846846846846846846846,
        
846846846846846846846846846846846846846846,
        
846846846846846846846846846846846846846846,
        
846846846846846846846846846846846846846846,
        
847106365365848849365365365365365850851106,
        
106106106106106106106106106106106106106106,
        
106106106106106106106106106106106106106106,
        
106106106106106106106106106106106106106106,
        
106106106106106106106106106106106106106106,
        
106106106106106106106106106106106106106106,
        
106106106106106106106852851106106106106106,
        
106106106106106106106106106852106106106106,
        
106106106106106106106106106106106106106106,
        
106106106106106106106106106106106106106852,
        
853854854854854854854854854854854854854854,
        
854854854854854854854854854854854854854854,
        
854854854854854854854854854854854854854854,
        
854854854854854854854854854854854854854854,
        
854854854854854854854854854854854854854854,
        
854854854854854854854854854854854854854854,
        
854854854854854854854854854854854855856856,
        
856856856856856856856856856856856856856856,
        
856856856856856856856856856856856856856856,
        
856856856856856856856856856856856856856856,
        
856857856856856856856856856856856856856856,
        
856858753753753753859106860861121862863864,
        
865121128128128128128128128128128128128128,
        
866867868106869128128128128128128128128128,
        
128128128128128128128128128128128128128128,
        
128128128128128128128128128128128128128128,
        
128128128128128128128870106106128128128128,
        
128128128128871128128128128128128106106106,
        
106106128872873873874875501106876877878879,
        
880881882883884128128128128128128128128128,
        
128128128128128128128885886887888889890891,
        
891892893894894895896897898897897897897899,
        
900900900901902902902903904905106906907908,
        
907907909907907910907911907911106106106106,
        
907907907907907907907907907907907907907907,
        
907912913914914914914914915603916916916916,
        
916916917918919920568609106106106106106106,
        
603603603603603921106106106106106106106106,
        
106106106106106106106106922922922923924924,
        
924924924924925106106106106106926926926927,
        
928106929929930931106106106106106106932932,
        
932933934934934934935934936106106106106106,
        
937937937937937938938938938938939939939939,
        
939939940940940941942943106106106106106106,
        
106106106106944945946946946946947948949949,
        
950951106106106106106106106106106106106106,
        
106106106106106106106106952952953954955955,
        
955956106106106106106106106106957957957957,
        
958958958959106106106106106106106106960961,
        
962963964964965966967106968969970970970971,
        
106106106106106106106106106106106106106106,
        
106106972972972972972972973974975975976977,
        
978978979980106106106106106106106106106106,
        
106106106106106106981981981981981981981981,
        
981982106106106106106106106106106106106106,
        
106106106106106106106106106106106106106106,
        
106106106106106106106106983983983984106106,
        
106106106106106106106106106106106106106106,
        
985986986986986986986987988989990991992993,
        
106106994995995995995995996997998106999999,
        
99910001001100210031004100410041005100610071008,
        
100910610610610610610610610101011101110111011,
        
1011101210131014101510161017106106106106106106,
        
106106106106106106106106106106106106106106,
        
101810181018101810181019102010610211022106106106,
        
106106106102310231023102310231023102310231023,
        
102310231023102310231023102310231023102310231023,
        
102310231023102310231023102310231023102310231023,
        
102310231023102310231023102310231023102310231023,
        
1024106106106106106106106106106106106106106,
        
10610610610610610251025102510251025102510251025,
        
102510251025102510261061027106106106106106106,
        
106106106106106106106106106106106102810281028,
        
102810281028102810281028102810281028102810281028,
        
102810281028102810281028102810281028102810281028,
        
10281028102810281028102810281028102810281029106,
        
106106106106106106106106106106106106106106,
        
106106106106106106106106106106106770770770,
        
770770770770770770770770770770770770770770,
        
770770770770770770770770770770770770770770,
        
7707707707707707707707701030106106106106106,
        
106106106106106106106106106106106106106106,
        
10610610610610610311031103110311031103110311031,
        
1032106103310341034103410341035106103610371038,
        
1061061061061061061061061061061061061039106,
        
106106106106106106106106106106106106106106,
        
106106106106106106106106106106106106106106,
        
106106603603603603603603603603603603603603,
        
603603603603603603603603603603603603603603,
        
603603603603104010660360360360310411042603603,
        
603603603603104310441045104610471048603603603,
        
10496036036036036031040106106106106919919919,
        
9199199199199191050106106106106106106106106,
        
106106106106106106106106106106106106106106,
        
106568568568568568568568568568568610106914,
        
9141051106106106106106106106106106106106106,
        
10610610610610610521052105210531054105410551052,
        
105210561057105410541052105210521053105410541058,
        
105910601056106110621054105210521052105310541054,
        
106310641065106610541054105410671068106910701054,
        
105410551052105210561054105410541052105210521053,
        
105410541055105210521056105410541054105210521052,
        
105310541054105510521052105610541054105410521052,
        
105210531054105410711052105210521072105410541073,
        
107410521052107510541054107610551052105210771054,
        
105410781079105210521080105410541054108110521052,
        
105210721054105410731082108310831083108310831083,
        
108412812812810851086108710881089109010851091,
        
108510871087109212810931281094109510931281094106,
        
1061061061061061096106568568568568568609568,
        
568568568568568568568568568568568609106568,
        
6106366106365686365681061061061066131097615,
        
61561510986156156156156156156151099615615615,
        
61561511001061061061061061061061061101603603,
        
6031102106733733733733733110373311041105106106,
        
106106106106106106106106106106106106106106,
        
10610610610610656856856856811061061107568568,
        
5685685685685685681108568568609106568568568,
        
56811096111061065685681106106568568568568568,
        
5685686101110568568568568568568568568568568,
        
5685685685685685685685685685685685681111568,
        
5685685685685685681112609106568568568106106,
        
106106106106106106106106106106106106106106,
        
10610611135685685685685685685685681114568106,
        
1061061061061065685685685685685685685681112,
        
106106106106106106106568568568568568568568,
        
568568568568568568568609106106106106106106,
        
106106106106106106106106106106106751751751,
        
751751751751751751751751751751751751751751,
        
7517517517517517517517517511115753753753753,
        
753751751751751751751754753750751751751751,
        
751751751751751751751751751751751751751751,
        
751751751751751751751751752753753753753753,
        
753753753753753753753753753753753753753753,
        
753753753753753753753753753753753753753753,
        
753753753753753753753753753753753753753753,
        
753753753753753753753753753753753753753856,
        
856856857753753753753753753753753753753753,
        
753753753753753753753753753753753753753753,
        
753753753753753753753753753753753753753753,
        
753753753753753753753753753753753753753753,
        
7537537537537537531116111710610610611181118,
        
1118111811181118111811181118111811181118106106,
        
106106106106106106106106106106106106106106,
        
873873873873873873873873873873873873873873,
        
873873873873873873873873873873873873873873,
        
873873106106854854854854854854854854854854,
        
854854854854854854854854854854854854854854,
        
8548548548548548548541119,
    ];

    private static 
$index2 = [
        
111111111232431111113332,
        
56678766910611121312121414141414,
        
14141414141261516156617171717171717,
        
171717171717171717171796101819182020,
        
20202020202020202020202020202020916,
        
101611111131121228823824222526,
        
272816293018313233332534222225332735,
        
363636223737373737373837373737373737,
        
373738373737373737393837373737373840,
        
404041414141404140404041404041414041,
        
404041414139404040414041404137403741,
        
374137413741374137413741374037403741,
        
374137413740374137413741374137413840,
        
374038403741374140374137413741384038,
        
403740374137404038403740374137413840,
        
374137413737413741374141413737413741,
        
373741373737414137373737413737413737,
        
374141413737413737413741374137374137,
        
414137413737413737374137413737414142,
        
374141414242424237434137434137434137,
        
403740374037403740374037403740413741,
        
413743413741373737413741414141414141,
        
373741373741413741373737374141404141,
        
414141414141414141414141414141414241,
        
414144444444444444444445454646464646,
        
464647472547454845484848454845454946,
        
474747474747252525254725472544444444,
        
444747474747505045474647474747474747,
        
474751515151515151515151515151525353,
        
535352545353535353555553535353555553,
        
535353535353535353535656565656535353,
        
535151515151515151575153535351515153,
        
535851515153535353515253535159606059,
        
606059515151515161626162456361626464,
        
656262626664646464646347616661616164,
        
616461616267676767676767676767676767,
        
676767676467676767676767616162626262,
        
626868686868686868686868686868686868,
        
626868686868686862626262626162626161,
        
616262626162616261626162616269706970,
        
697069706970697069706262626261627161,
        
626161626261616172737272727272727272,
        
727272727272737373737373737374747474,
        
747474747574757575757575757575757575,
        
757572757275727572757275767777787877,
        
797972757275727572727572757275727572,
        
757275727575646464646464646464808080,
        
808080808080808080808080808080808080,
        
806464818282828282826483838383838383,
        
838383838383838364848564646464866487,
        
888888888788888889878888888888888787,
        
878787878888878888899088919293949596,
        
97989910010010110210310410510610710810688,
        
871069910910910910910910910910910910910964,
        
64646464109109109106106646464110110110110,
        
11064111111112113113114115116117117118118118,
        
1181181181181181191201211226464116122123123,
        
123123123123123123124123123123123123123123,
        
1231231231251261271281291301311327878133134,
        
118118118118118134118118134135135135135135,
        
135135135135135113136136116123123137123123,
        
123123123123123123123123123116123118118118,
        
118118118118138117118118118118134118139139,
        
118118117134118118134123123140140140140140,
        
140140140140140123123123141141123142142142,
        
14214214214214214214214214214214264143144145,
        
144144144144144144144144144144144144144144,
        
146147146146147146146147147147146147147146,
        
1471461461461471461471461471461471461466464,
        
144144144148148148148148148148148148148148,
        
148148148149149149149149149149149149149149,
        
148646464646464150150150150150150150150150,
        
150151151151151151151151151151151151151151,
        
151151151151152152152152152152152153152154,
        
1541551561561561546464646464157157157157,
        
157157157157157157157157157157158158158158,
        
159158158158158158158158158158159158158158,
        
1591581581581581586464160160160160160160160,
        
16016016016016016016016064161161161161161161,
        
16116116116216216264641636412364123123123,
        
12312312312312312312312364646464646464118,
        
118134118118134118118118134134134164165166,
        
11811811813411811813413411811811811864167167,
        
167168169169169169169169169169169169169169,
        
169169167168170169168168168167167167167167,
        
16716716716816816816817116816816978133172172,
        
1671671671691691671678484173173173173173173,
        
17317317317317417516916916916916916964169169,
        
1691691691691696417617717764178178178178178,
        
17817817864641781786464178178178178178178,
        
17817817817817817817817864178178178178178178,
        
178641786464641781781781786464179178177177,
        
17717617617617664641771776464177177180178,
        
64646464646464641776464646417817864178,
        
1781781761766464181181181181181181181181181,
        
1811781781821821831831831831831831841826464,
        
64646418518518664187187187187187187646464,
        
641871876464187187187187187187187187187187,
        
1871871871876418718718718718718718764187187,
        
641871876418718764641886418618618618518564,
        
6464641851856464185185189646464185646464,
        
646464641871871871876418764646464646464,
        
190190190190190190190190190190185185187187,
        
18718564646419119119264193193193193193193,
        
1931931936419319319364193193193193193193193,
        
19319319319319319319364193193193193193193193,
        
64193193641931931931931936464194193192192,
        
192191191191191191641911911926419219219564,
        
64193646464646464641931931911916464196,
        
19619619619619619619619619619719864646464,
        
64646419920020064201201201201201201201201,
        
64642012016464201201201201201201201201201,
        
2012012012012016420120120120120120120164201,
        
201642012012012012016464202201200199200199,
        
1991991996464200200646420020020364646464,
        
646464641992006464646420120164201201201,
        
1991996464204204204204204204204204204204205,
        
201206206206206206206646420720864208208208,
        
208208208646464208208208642082082082086464,
        
642082086420864208208646464208208646464,
        
20820820820820820820820820820864646464209,
        
20920720920964646420920920964209209209210,
        
6464208646464646464209646464646464211,
        
211211211211211211211211211212212212213213,
        
21321321321321421364646464646421521521564,
        
2162162162162162162162166421621621664216216,
        
216216216216216216216216216216216216216216,
        
21621664216216216216216646464216217217217,
        
21521521521564217217217642172172172186464,
        
646464646421922064216216646464646464216,
        
2162172176464221221221221221221221221221221,
        
222222222222222222222223646422422464225225,
        
2252252252252252256422522522564225225225225,
        
22522522522522522522522522522522522522522564,
        
2252252252252256464226225224227224224224224,
        
2246422722422464224224228229646464646464,
        
642242246464646464646422564225225228228,
        
646423023023023023023023023023023064225225,
        
6464646464646423123164232232232232232232,
        
2322326423223223264232232232232232232232232,
        
2322322322322322322322322326464232231231231,
        
233233233233642312312316423123123123423264,
        
646464646464642312322322332336464235235,
        
23523523523523523523523523623623623623623664,
        
6464237232232232232232232646423823864239,
        
239239239239239239239239239239239239239239,
        
23923923964646423923923923923923923923964,
        
2392392392392392392392392396423964646464,
        
240646464642382382382412412416424164238238,
        
238238238238238238646423823824264646464243,
        
243243243243243243243243243243243243243243,
        
24324424324324424424424424524524664646464,
        
247243243243243243243248244249249249249244,
        
244244250251251251251251251251251251251250,
        
250646464646425225264252646425225264252,
        
646425264646464646425225225225264252252,
        
2522522522522526425225225264252642526464,
        
25225264252252252252253252252253253253253254,
        
2546425325325264642522522522522526425564,
        
2562562562562532536464257257257257257257257,
        
2572572576464252252252252258259259259260260,
        
260260260260260260260260260260260260260259,
        
260259259259261261259259259259259259262262,
        
262262262262262262262262263263263263263263,
        
263263263263259261259261259264265266265266,
        
26726725825825825825825825825864258258258258,
        
25825825825825825825825864646464268269270,
        
271270270270270270269269269269270267269270,
        
272272273260272272258258258258258270270270,
        
27027027027027027027027064270270270270270270,
        
27027027027027027064259259259259259259259259,
        
26125925925925925925964259259260260260260260,
        
2742742742742602606464646464275275275275,
        
275275275275275275275276276277277277277276,
        
277277277277277278276279279276276277277275,
        
280280280280280280280280280280281281281281,
        
281281275275275275275275276276277277275275,
        
275275277277277275276276276275275276276276,
        
276276276276275275275277277277277275275275,
        
275275277276276277277276276276276276276282,
        
275276280280276276276277283283284284284284,
        
28428428428428428428428428428464284646464,
        
64642846464285285285285285285285285285285,
        
28584286285285285287287287287287287287287288,
        
288288288288288288288289289289289289289289,
        
289289642892892892896464289289289289289289,
        
289642892892896464290290290291291291291291,
        
291291291291292292292292292292292292292292,
        
292292292292292292292292292292646464293293,
        
293293293293293293293293646464646464294294,
        
294294294294294294294294294294294646464295,
        
296296296296296296296296296296296296296296,
        
296296296296296296297297296298299299299299,
        
299299299299299299299299299299299299299299,
        
300301646464302302302302302302302302302302,
        
30284848430330330364646464646464304304,
        
30430430430430430430430430430430464304304304,
        
304305305306646464307307307307307307307307,
        
307307308308309848464310310310310310310310,
        
31031031031131164646464312312312312312312,
        
312312312312312312312643123123126431331364,
        
646464314314314314314314314314314314314314,
        
315315316315315315315315315315316316316316,
        
316316316316315316316315315315315315315315,
        
31531531731531831831831931831831832031432164,
        
643223223223223223223223223223226464646464,
        
643233233233233233233233233233236464646464,
        
64324324666632466325324324324324326326326,
        
32764328328328328328328328328328328646464,
        
646464329329329329329329329329329329329330,
        
3293293293293293313296464646464296296296,
        
2962962966464332332332332332332332332332332,
        
332332332646464333333333334334334334333333,
        
33433433464646464334334333334334334334334,
        
33433533633764646464338646464339339340340,
        
340340340340340340340340341341341341341341,
        
3413413413413413413413416464341341341341341,
        
646464342342342342342342342342342342342342,
        
64646464343343343343343343343343343342342,
        
342342342342342343343646464646464344344344,
        
344344344344344344344345646464346346347347,
        
347347347347347347348348348348348348348348,
        
3483483483483483483483493503513513516464352,
        
352353353353353353353353353353353353353353,
        
35435535435535535535535535535564356354355354,
        
354355355355355355355355355354354354354354,
        
3543553553573573573573573573573576464358359,
        
359359359359359359359359359646464646464360,
        
3603603603603603603613603603603603603606464,
        
362362362362363364364364364364364364364364,
        
364364364364364364365363362362362362362363,
        
362363363363363363362363366364364364364364,
        
36436464646464367367367367367367367367367,
        
367368368368368368368368369369369369369369,
        
369369369369370371370370370370370370370369,
        
369369369369369369369369646464372372373374,
        
374374374374374374374374374374374374374373,
        
372372372372373373372372375376373373374374,
        
377377377377377377377377377377374374374374,
        
374374378378378378378378378378378378378378,
        
378378379380381381380380380381380381381381,
        
3823826464646464646464383383383383384384,
        
384384384384384384384384384384385385385385,
        
385385385385386386386386386386386386385385,
        
386387646464388388388388388389389389389389,
        
389389389389389646464384384384390390390390,
        
390390390390390390391391391391391391391391,
        
391391391391391391392392392392392392393393,
        
39439439439439439439439478787884395133133,
        
133133133787813313313313378396395395395395,
        
39539539539739739739713339739739739739639678,
        
39739764414141414141626262626275444444,
        
444444444444656565656544444444656565,
        
6565414141414139841414141414141414141,
        
4444444444444444444444446578781337878,
        
787878787813378783994001334017878787878,
        
787878787878787878787878787878787864,
        
6464646440213378133374137413741414141,
        
414141414137416262626262626262616161,
        
616161616162626262626264646161616161,
        
6164646461646164616461403403403403403403,
        
4034036262626262646262616161614036362,
        
6363636262626462626161616140363636362,
        
626262646462626161616164636363616161,
        
6161636363646462626264626261616161403,
        
636364404404404404404404404404404404404405,
        
4064064074084094104104094094092266411412413,
        
4144114124134142222226622222222415416417,
        
41841942042121422423422422423226666662835,
        
226666224244246666664254264276666666666,
        
66666666666642866424666666666666666666,
        
664044054054054054056464646464405405405405,
        
40540542944646433429429429429429430430428,
        
42642743142933333333429429429429429430430,
        
428426427644444444444646464247247247247,
        
24724724724724743224724723247247247247247247,
        
646464646478783953957878787839539539578,
        
78433433433433784334334333953957813378395,
        
3951331331331337864646464646464262643430,
        
2630264342630344344344343434434434434435,
        
264343026428434434434434434262626303026,
        
4342667264342637384344344363443443437434,
        
343973973973973426263434434434437428428428,
        
428434343434342642826264127443843843836,
        
3643843843843843843836363636438439439439,
        
439439439439439439439439439440440440440439,
        
4394404404404404404404404404403741440440440,
        
4403664646464646439393939393030303030,
        
428428262626264282626428262642826262626,
        
2626264282626262626262626263030262626,
        
26262626262626262642842826263926392626,
        
26262626262626263026262626428428428428,
        
42842842842842842842842839437441441437428428,
        
3944143743744143743742839428441430442428441,
        
4374284284284414374374413944144143743739437,
        
394373939393944144143744143743743743743739,
        
393939428437428437441441437437437437437437,
        
437437437437441437437437441428428428428428,
        
441437437437428428428428428428428428428437,
        
44139437428441441441441437437441441428428441,
        
441437437441441437437441441437437437437437,
        
4284284374374374374284283942842843739428428,
        
42842842842842842843743742839437437437428428,
        
428428428437441428437437437437437428428437,
        
437428428428428437437437437437437437437428,
        
428437437437437262626262626302626262626,
        
43743726262626262626443444262626262626,
        
2626262626274274274274274274274274274274,
        
274274274264282626262626262626274262626,
        
262642842842842842842842842842826262626428,
        
4282626262626262626262664646464262626,
        
262626266426262664646464643636363636,
        
363636333333333333333333333333445445,
        
4454454454454454454454454454454454454383636,
        
363636303030303030303030303030262626,
        
262626303030302626303026303030303026,
        
263030262630392626262630302626303926,
        
262626303030262630262630302626262626,
        
303026263026262626303026262626302630,
        
263026302626262626303026303030263030,
        
303026303026392626262626263030262626,
        
2627426262626262626303030303030303030,
        
302630303026302626262664262626262626,
        
262626262626302626426427426427426427426,
        
4274264274264274264273636438438438438438438,
        
43843843843843843826262626437428428437437,
        
426427428437437428437437437428428428428428,
        
437437437437428428428428428437437437428428,
        
428437437437437910910910910426427446446,
        
446446446446446446428428428426427910426427,
        
426427426427426427426427428428437437437437,
        
437437428428428428428428428428437428428428,
        
428437437437437437428437437428428426427426,
        
427437428428428428437428437437437428428437,
        
437428428428428428428428428428428437437437,
        
437437437428428426427428428428428437437437,
        
437437437437437437437437428437437437437428,
        
428437428437428428437428437437437437428428,
        
428428428437437428428428428437437437437428,
        
437437428428437437428428428428437437437437,
        
437437437437437437437428428437437437437437,
        
437437437428437437437437437437437437428428,
        
428428428437428437428428428437437437437437,
        
428428428428437428428428437437437437437428,
        
4374284284284284284284282626428428428428428,
        
4286464642626262626303030303064646464,
        
6464447447447447447447447447447447447447447,
        
44744764448448448448448448448448448448448448,
        
4484484486437413737374141374137413741,
        
373737374137414137414141414141444437,
        
37697069707044944944944944944969706970,
        
45045045069706464646464451451451451452451,
        
451453453453453453453453453453453453453453,
        
4536445364646464644536464454454454454454,
        
454454454646464646464644554566464646464,
        
6464646464646464644577777777777777777,
        
666628352835666666283566283566666666,
        
6666666666410666641066283566662835426,
        
4274264274264274264276666666666456666410,
        
41064646464458458458458458458458458458458,
        
6445845845845845845845845845864646464458,
        
4584584584584586464459459459459459459459459,
        
45945945945964646464460461461461459462463,
        
464443444443444443444443444443444459459443,
        
444443444443444443444465466467467459464464,
        
464464464464464464464468469470471472472465,
        
47347347347347345945946446446446246346145926,
        
64474474474474474474474474474474474474474474,
        
4744744744744744744744746464475475476476477,
        
477474465478478478478478478478478478478478,
        
478478478478478478478461473479479478646464,
        
6464480480480480480480480480480480480480480,
        
480480480480646464287287287287287287287287,
        
28728728728728728764481481482482482482481481,
        
48148148148148148148148148048048064646464,
        
64483483483483483483483483483483483483483484,
        
48464482482482482482482482482482482481481481,
        
481481481485485485485485485485485459486486,
        
486486486486486486486486486486486486486483,
        
483483483484484484481481486486486486486486,
        
486481481481481459459459459487487487487487,
        
48748748748748748748748748748764481481481481,
        
481481481459459459459481481481481481481481,
        
481481481481459459488489489489489489489489,
        
489489489489489489489489489489489489489488,
        
490490490490490490490490490490489489489489,
        
488490490490491491491491491491491491491491,
        
491491491492491491491491491491491646464493,
        
49349349349349349349349349349349349349349364,
        
494494494494494494494494495495495495495495,
        
496496497497497497497497497497497497497497,
        
498499499499500500500500500500500500500500,
        
4974976464646472757275727550177797979,
        
5027777777777777777777750250364646464,
        
64646477504504504504504504504504504504504,
        
504504504505505505505505505505505505505506,
        
506507507507507507507474747474747474545,
        
454545454545454747374137413741414137,
        
413741374144414141414141414137413741,
        
37374145508508374137416437413741646464,
        
6437413764646464644444414242424242509,
        
509510509509509511509509509509510509509509,
        
509509509509509509509509509509509509512512,
        
51051051251351351351364646464514514514514,
        
514514274274247436646464646464515515515515,
        
515515515515515515515515516516516516517517,
        
518518518518518518518518518518518518518518,
        
518518518518517517517517517517517517517517,
        
517517517517517517519646464646464646464,
        
520520521521521521521521521521521521646464,
        
646464172172172172172172172172172172169169,
        
16916916916917417417416964646464522522522,
        
522522522522522522522523523523523523523523,
        
523523523523523523523523523523523523523524,
        
524524524524525525525526526527527527527527,
        
527527527527527527527527527527528528528528,
        
52852852852852852852852953064646464646464,
        
64646464531287287287287287646464532532532,
        
533534534534534534534534534534534534534534,
        
534534535533533532532532532533533532533533,
        
533536537537537537537537537537537537537537,
        
537645385395395395395395395395395395396464,
        
6464537537540540540540540540540540540541541,
        
54154154154154254254154154254254154164540540,
        
5405415405405405405405405405405415426464543,
        
5435435435435435435435435436464544544544544,
        
545275275275275275275283283283275276646464,
        
64546546546546546546546546547546547547548546,
        
5465475475465465465465465475475465475466464,
        
646464646464546546549550550551551551551551,
        
551551551551551551552553553552552554554551,
        
555555552556646428928928928928928964551551,
        
5515525525535525525535525525545525566464557,
        
557557557557557557557557557646464646464287,
        
558558558558558558558558558558558558558558,
        
55855855855828764646464288288288288288288,
        
288646464642882882882882882882882882886464,
        
64645596464646464646464646464646464559,
        
560561561561561561561561561561561561561561,
        
561561561561561561561561561560488488488488,
        
488488488488488488488488488488490490488488,
        
4904904904904904904141414141414164646464,
        
83838383836464646464109562109109563109,
        
10910910910910910910910910910910910964109109,
        
10910910964109641091096410910964109109123,
        
123564564564564564564564564564564564564564,
        
564564564646464646464646464123123123123,
        
1231231231231231231234135656464123123123123,
        
123123123123123123114266464585858585858,
        
585846146146146146146146146646746164646464,
        
6464461465465566566466467466467466467466467,
        
466467466467466467466467461461466467461461,
        
46146156656656656746156764461567461461465443,
        
44444344444344456846146156957057157157264461,
        
5735684616464646412312312312312364123123,
        
123123123123123646440564574574575576575574,
        
574577578574579580581580580582582582582582,
        
582582582582582580574583584583574574585585,
        
585585585585585585585585585585585585585585,
        
585585577574578586587586588588588588588588,
        
588588588588588588588588588588588588577584,
        
578584577578589590591589589592592592592592,
        
592592592592592593592592592592592592592592,
        
592592592592592593593594594594594594594594,
        
594594594594594594594594646464594594594594,
        
5945946464594594594646464576576584586595,
        
576576645965975975975975965966464598598598,
        
26306464599599599599599599599599599599599,
        
5996459959959959959959959959959959964599599,
        
59964599599645995995995995995995996464599,
        
599599646464646484668464646464514514514,
        
514514514514514514514514514514646464274600,
        
600600600600600600600600600600600600601601,
        
601601602602602602602602602602602602602602,
        
6026026026026026016464646464274274274274,
        
2741336464603603603603603603603603603603603,
        
60360364646460460460460460460460460460464,
        
646464646464605605605605605605605605605605,
        
6056056056056056460660660660664646464607,
        
607607607607607607607607608607607607607607,
        
6076076076086464646464609609609609609609,
        
60960960960960960960960964610611611611611611,
        
61161161161161161161164646464612613613613,
        
6136136464614614614614614614614614615615615,
        
615615615615615616616616616616616616616617,
        
6176176176176176176176176176176176176176464,
        
618618618618618618618618618618646464646464,
        
619619619619619619646461964619619619619619,
        
619619619619619619619619619619619619619619,
        
619646196196464646196464619620620620620620,
        
62062062062062062062062062064621622622622622,
        
622622622622623623623623623623623623623623,
        
623623623623624624624624624624646464625626,
        
6266266266266266266266266266464646464627,
        
628628628628628628628628629629629629629629,
        
62962964646464646462962963063163163164631,
        
631646464646463163263163363063063063064630,
        
63063064630630630630630630630630630630630630,
        
630630630630630630630646464646336346326464,
        
6464635636636636636636636636636637637637637,
        
63763763763763764646464646464638638638638,
        
638638638638638638638638638639639640641641,
        
641641641641641641641641641641641641646464,
        
642642642642642642642643643643643643643643,
        
6436436436436436436436464644644644644644644,
        
6446446456456456456456456456456456456456464,
        
646464646646646646646646646646647647647647,
        
64764764764764764646464646464648648648648,
        
64864864864864864864864864864864864649650649,
        
651651651651651651651651651651651651651650,
        
650650650650650650650650650650650650650652,
        
65365365365365365365364646464654654654654,
        
654654654654654654654654654654654654654654,
        
654654655655655655655655655655655655656656,
        
657658658658658658658658658658658658658658,
        
657657657656656656656657657659660661661662,
        
661661661661646464646464663663663663663663,
        
66366366364646464646464664664664664664664,
        
664664664664646464646464665665665666666666,
        
666666666666666666666666666666666666666666,
        
666666666667667667667667668667667667667667,
        
66766966964670670670670670670670670670670671,
        
67167167164646464672672673674674674674674,
        
674674674674674674674674674674674673673673,
        
672672672672672672672672672673675674674674,
        
67467667667667664646464646464677677677677,
        
677677677677677677646464646464678678678678,
        
678678678678678678678679680679680680679679,
        
679679679679681682683683683683683683683683,
        
683683646464646464684684684684684684684684,
        
68468468468468468468464685685685685685685685,
        
6856856856856464646464686686686686646464,
        
64687687687687687687687687687687687687687687,
        
6876450464646464646464688688688688688688,
        
688688688688688688688646464688689689689689,
        
689689689689689689689689689689689689689689,
        
6896896896896464646464646464690690690690,
        
691691691691691691691691691691691691691478,
        
4746464646464642742742742742742746464274,
        
2742742742742742746464274274274274274274274,
        
274274274274274692692395395395274274274693,
        
692692692692692405405405405405405405405133,
        
1331331331331331331332742747878787878133,
        
13327427427427427427478787878274274602602,
        
6946946946026464514514646464646464434434,
        
4344344344344344344344343434343434343434,
        
34343434343434343434434434434434434434,
        
43443443443434343434343434643434343434,
        
3443464434434646443464644344346464434434,
        
43443464434434343464346434343434343434,
        
6434343434343434434434644344344344346464,
        
43443443443443443443443464434434434434434434,
        
4346434344344346443443443443464434434434,
        
434434644346464644344344344344344344346434,
        
34343434343434343434346464434695343434,
        
343434343434437343434343434434434434434,
        
434434434434434695343434343434343434437,
        
3434434434434434434695343434343434343434,
        
437343434343434434434434434434434434434434,
        
695344373434343434343434434346464696696,
        
69669669669669669669669612312312312364123123,
        
1236412312364123646412364123123123123123,
        
12312312312312364123123123123641236412364,
        
646464646412364646464123641236412364123,
        
123123641236412364123641236412312312312364,
        
123641231236412312312312312312312312312364,
        
6464646412312312364123123123111111646464,
        
6464643333336464646464445445445445445445,
        
2746444544526266464646444544544564646464,
        
646464646464642742746974814816464646464,
        
481481481646464646448164646464646464481,
        
4816464646464642664646464646464262626,
        
262626642626262626266464642626262626,
        
642626266426262626262664262626266464,
        
642626262626266464646464262626262626,
        
64646464262626489489489489489489488490490,
        
490490490490490646464405646464646464405,
        
4054054054054054054055615615615615615606464,
    ];
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0612 ]--